@mostajs/doc-driver-electron
v0.1.0
Published
Driver de rendu PDF pour @mostajs/doc-export via Electron webContents.printToPDF — ZÉRO binaire externe (Chromium est déjà présent dans l'app Electron). `electron` est fourni par l'application hôte (peer injecté).
Downloads
22
Maintainers
Readme
@mostajs/doc-driver-electron
Auteur : Dr Hamid MADANI [email protected] Licence : AGPL-3.0-or-later · Niveau : N2 · Zéro dépendance, sans build
Driver PDF pour @mostajs/doc-export via webContents.printToPDF
d'Electron — zéro binaire externe : une application Electron embarque déjà Chromium, donc
on obtient un PDF fidèle (CSS/JS modernes) sans installer pandoc, Chrome ni Playwright. C'est le
différenciateur identifié dans l'état de l'art (../mosta-doc-export/docs/01-ETUDE-ETAT-ART) :
aucune solution mondiale ne s'intègre aussi proprement dans une app Electron.
Il implémente le contrat RenderDriver de doc-export (toPdf(html, { format, out })) et
n'a aucune dépendance : electron est injecté par l'application hôte.
Install
npm i @mostajs/doc-export @mostajs/doc-driver-electron @mostajs/markdown-html
# electron est fourni par votre application Electron (peer)Usage (dans le processus principal Electron)
import electron from 'electron'
import { createDocExporter } from '@mostajs/doc-export'
import { createElectronPdfDriver } from '@mostajs/doc-driver-electron'
import * as markdown from '@mostajs/markdown-html'
const doc = createDocExporter({
markdown: { toHtml: (md) => ({ html: markdown.mdToHtml(md).html }) },
drivers: { pdf: createElectronPdfDriver({ electron }) }, // ← 0 binaire externe
})
await doc.render({ source, format: 'pdf', theme: 'light', out: 'rapport.pdf' })
// Diaporama 16:9 :
await doc.render({ source, format: 'slides-pdf', theme: 'slides-light', out: 'deck.pdf' })API
createElectronPdfDriver({ electron, printOptions? }) -> { toPdf(html, { format?, out? }) -> Uint8Array }
electron: l'objetrequire('electron')de l'app hôte (requis).printOptions: surcharge des optionsprintToPDF(marges,pageSize,headerFooter…).format: 'slides-pdf'→ paysage + page 16:9 ; sinon A4 portrait.outfourni → écrit le PDF sur disque et retourne les octets.
Notes
- Le HTML autonome (CSS embarqué par
doc-export) est chargé endata:URL (ni fichier ni serveur). Pour de très gros documents, une variante « fichier temporaire +loadFile» pourra être ajoutée (raffinement connu). - Fenêtre offscreen invisible, détruite après rendu (aucune fuite).
Tests
npm test # faux electron injecté — aucun runtime Electron requis