Skip to content

feat(poiesis): add chromium CDP printer for HTML-to-PDF conversion - #4377

Merged
forkwright merged 1 commit into
mainfrom
chore/b003-printer-chromium
May 30, 2026
Merged

feat(poiesis): add chromium CDP printer for HTML-to-PDF conversion#4377
forkwright merged 1 commit into
mainfrom
chore/b003-printer-chromium

Conversation

@forkwright

Copy link
Copy Markdown
Owner

New poiesis-printer-chromium crate — headless Chromium bridge via CDP for HTML→PDF rendering (B-003).

Changes

  • print_to_pdf(html, opts) -> Result<Vec<u8>> converts an HTML string to PDF bytes via chromiumoxide 0.7
  • PrintOptions with widescreen_16_9() (254×142.875 mm), standard_4_3() (254×190.5 mm), and from_aspect() routing on AspectRatio
  • Binary discovery: CHROMIUM_PATH env → which() for chromium/chromium-browser/google-chrome/google-chrome-stable
  • chromium feature (default-on) gates all CDP deps; compiles clean with --no-default-features
  • Soft dep: requires system Chromium (apt install chromium / brew install --cask chromium)
  • RUSTSEC-2025-0052 (async-std unmaintained via chromiumoxide 0.7) suppressed in audit.toml and deny.toml

Gate

Gate-Passed: kanon 0.1.3

@forkwright
forkwright force-pushed the chore/b003-printer-chromium branch from 6828475 to c9724d7 Compare May 30, 2026 00:32
@forkwright forkwright closed this May 30, 2026
@forkwright forkwright reopened this May 30, 2026
New `poiesis-printer-chromium` crate — headless Chromium bridge via CDP:

- `print_to_pdf(html, opts) -> Result<Vec<u8>>` converts an HTML string
  to PDF bytes using a system Chromium browser via chromiumoxide 0.7.
- `PrintOptions` with presets: `widescreen_16_9()` (254 × 142.875 mm),
  `standard_4_3()` (254 × 190.5 mm), and `from_aspect()` routing on
  `AspectRatio`.
- Binary discovery: `CHROMIUM_PATH` env → `which()` for chromium,
  chromium-browser, google-chrome, google-chrome-stable.
- `chromium` feature (default-on) gates all CDP deps; compiles clean
  with `--no-default-features`.
- Soft dep: install script note — requires system Chromium.
- Advisory RUSTSEC-2025-0052 (async-std via chromiumoxide 0.7) suppressed
  in audit.toml and deny.toml; no upgrade path while pinned to 0.7.

Gate-Passed: kanon 0.1.3
@forkwright
forkwright force-pushed the chore/b003-printer-chromium branch from c9724d7 to d5f3c67 Compare May 30, 2026 00:43
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@forkwright
forkwright merged commit bd4e29e into main May 30, 2026
8 of 9 checks passed
@forkwright
forkwright deleted the chore/b003-printer-chromium branch May 30, 2026 00:45
forkwright pushed a commit that referenced this pull request May 30, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.30.0](v0.29.0...v0.30.0)
(2026-05-30)


### Features

* **aletheia:** faithful import consumer for
[#4163](#4163) (PR3/4)
([#4357](#4357))
([4e49dbe](4e49dbe))
* **aletheia:** populate working_state + typed knowledge in export
([#4163](#4163) PR2/4)
([#4351](#4351))
([702129e](702129e))
* **diaporeia:** wire memory.* MCP tools to organon executor
([#4117](#4117))
([#4352](#4352))
([7f2e243](7f2e243))
* **graphe:** portability raw entry points for
[#4163](#4163) (PR1/4)
([#4349](#4349))
([f267fe5](f267fe5))
* **poiesis-charts:** implement column + bar SVG emitters (B-005)
([#4368](#4368))
([3559002](3559002))
* **poiesis-charts:** implement line + area SVG emitters (B-005)
([#4372](#4372))
([2ca94ac](2ca94ac))
* **poiesis-charts:** implement pie + doughnut SVG emitters (B-005)
([#4371](#4371))
([996dbf3](996dbf3))
* **poiesis-charts:** implement scatter SVG emitter (B-005)
([#4369](#4369))
([6261c8b](6261c8b))
* **poiesis-charts:** implement stat KPI SVG emitter (B-005)
([#4374](#4374))
([1416fa0](1416fa0))
* **poiesis-charts:** implement Vega-Lite shell-out emitter (B-005)
([#4373](#4373))
([e6c9b70](e6c9b70))
* **poiesis-charts:** scaffold new crate per B-005
([#4318](#4318))
([fa2e374](fa2e374))
* **poiesis-core:** land B-001 envelope + factbase + open component
registry ([#4350](#4350))
([0cb2bd3](0cb2bd3))
* **poiesis-doc:** pandoc availability probe + flake.nix pin (B-014)
([#4361](#4361))
([d5efe1d](d5efe1d))
* **poiesis-doc:** scaffold Pandoc backend module, AST serializer, Lua
filter stubs (B-012)
([#4365](#4365))
([23dbe91](23dbe91))
* **poiesis-sheet:** wire B-007 workbook feature flag, error type, and
module declarations
([#4353](#4353))
([f6e574d](f6e574d))
* **poiesis-theme:** B-002 foundation — CSS byte-parity, OOXML
clrScheme+fontScheme, doc-vars, extended summus tokens
([#4370](#4370))
([b0c4319](b0c4319))
* **poiesis-theme:** base PPTX sink (B-002-B)
([#4378](#4378))
([f072bfe](f072bfe))
* **poiesis-theme:** LaTeX template sink (B-002-C)
([#4380](#4380))
([8cc683d](8cc683d))
* **poiesis-theme:** reference.docx sink (B-002-D)
([#4381](#4381))
([520a9b3](520a9b3))
* **poiesis-theme:** Typst template sink (B-002-C)
([#4379](#4379))
([cf48d61](cf48d61))
* **poiesis:** add chromium CDP printer for HTML-to-PDF conversion
([#4377](#4377))
([bd4e29e](bd4e29e))
* **poiesis:** add deck-layout solver and deck HTML/CSS renderer
([#4360](#4360))
([5aa1472](5aa1472))
* **poiesis:** add image-text, timeline, comparison, blank component
packs ([#4367](#4367))
([457efd7](457efd7))
* **poiesis:** add stat, quote, chart, table, image-full component packs
([#4366](#4366))
([4a3df26](4a3df26))
* **poiesis:** add title, section, bullet, two-col component packs
([#4356](#4356))
([dde8451](dde8451))
* **poiesis:** retire poiesis-text; migrate callers to poiesis-doc/typst
(B-013) ([#4354](#4354))
([f13df45](f13df45))


### Documentation

* **instance:** refresh stale v0.13.x version references to v0.29.0+
line ([#4347](#4347))
([01bc922](01bc922))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant