@mostajs/doc-driver-chrome
v0.1.0
Published
Driver de rendu PDF pour @mostajs/doc-export via un binaire Chrome/Chromium headless (--print-to-pdf). Reproduit la voie serveur de md2View. `run` injectable (testable sans Chrome) ; aucune dépendance @mostajs ; le navigateur est une dépendance système.
Maintainers
Readme
@mostajs/doc-driver-chrome
Auteur : Dr Hamid MADANI [email protected] Licence : AGPL-3.0-or-later · Niveau : N2 · Sans build
Driver PDF pour @mostajs/doc-export via un binaire Chrome/Chromium
headless (--print-to-pdf) — c'est la voie serveur éprouvée de l'outil md2View. Rendu
moderne (CSS/JS complets). La taille de page (A4 / 16:9) vient du CSS @page du thème
(@mostajs/doc-themes) : le driver n'impose rien.
Il implémente le contrat RenderDriver (toPdf(html, { out })), sans dépendance @mostajs ;
le navigateur est une dépendance système (Chrome, Chromium ou Brave). wkhtmltopdf est mort
(CVE non corrigées) — on ne l'utilise jamais.
Install
npm i @mostajs/doc-export @mostajs/doc-driver-chrome
# + un navigateur : sudo apt install chromium (ou Google Chrome)Usage (serveur)
import { createDocExporter } from '@mostajs/doc-export'
import { createChromeCliDriver } from '@mostajs/doc-driver-chrome'
import { createPaletteTheme } from '@mostajs/doc-themes'
import * as markdown from '@mostajs/markdown-html'
const doc = createDocExporter({
markdown: { toHtml: (md) => ({ html: markdown.mdToHtml(md).html }) },
theme: createPaletteTheme(),
drivers: { pdf: createChromeCliDriver() }, // auto-détecte le navigateur
})
await doc.render({ source, format: 'pdf', theme: 'hadhinat', out: 'rapport.pdf' })
await doc.render({ source, format: 'slides-pdf', theme: 'dark', out: 'deck.pdf' }) // 16:9 via CSS @pageAPI
createChromeCliDriver({ chrome?, candidates?, run?, exists? }) -> { toPdf(html, { out? }) -> Uint8Array }
chrome: chemin du binaire (sinonCHROMEenv, sinon auto-détection parmigoogle-chrome,chromium,brave-browser…).run: injectable —(bin, args) => Promise(par défautexecFile, sans shell). Sert aux tests.outfourni → PDF conservé à ce chemin et octets retournés ; sinon fichier temporaire nettoyé.
Notes
- Options Chrome :
--headless --disable-gpu --no-sandbox --no-pdf-header-footer --print-to-pdf(ni en-tête ni pied de page ; fonds/couleurs conservés). - Le HTML autonome (CSS embarqué par doc-export) est écrit en fichier temporaire puis chargé en
file://— les ressources doivent donc être inlinées (ce que fait doc-export).
Tests
npm test # `run` injecté (faux chrome) — aucun navigateur requis