GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso automatizzare le conversioni da HTML a PDF?

Mi dispiace portare alla luce questo vecchio post, ma è uscito primo nella mia ricerca del miglior strumento di conversione HTML/PDF. Su Linux wkhtmltopdf è molto buono (prende in considerazione CSS, tra gli altri) e GPL.


Aggiornamento 2019-05

L'intero processo è stato fortunatamente racchiuso in un'immagine docker da TheCodingMachine:https://github.com/thecodingmachine/gotenberg

Ciò rende la manutenzione e l'utilizzo della generazione di pdf basata su Chrome negli ambienti di produzione davvero fluidi e senza problemi.

C'è una nuova modalità senza testa da Chrome 59. Poiché tutte le altre soluzioni faticano davvero con le funzionalità CSS più nuove (o non più così nuove) come flexbox, questa era nel mio caso l'unica soluzione per produrre un output PDF adeguato.

Per creare un pdf da un file html locale basta utilizzare il seguente comando:chrome --headless --disable-gpu --print-to-pdf file:///path/to/myfile.html .

Per Mac OS sostituisci chrome con /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome .

L'unico aspetto negativo che ho notato finora è che (al momento) non è possibile passare l'html tramite stdin, ma la creazione di un file temporaneo non è un gran problema.

Per ulteriori informazioni, vedere https://developers.google.com/web/updates/2017/04/headless-chrome#create_a_pdf_dom

Aggiornamento:a quanto pare, i ragazzi di Chrome molto probabilmente forniranno una sorta di modulo nodo per questa attività, che alla fine deprecherebbe la modalità senza testa (https://bugs.chromium.org/p/chromium/issues/detail?id =719921).

La soluzione migliore sarebbe utilizzare l'approccio basato su nodi utilizzando il modulo burattinaio come documentato in https://developers.google.com/web/updates/2017/04/headless-chrome#node e stampare la pagina tramite il comando Page.printToPDF , che abilita anche alcune configurazioni aggiuntive.

Naturalmente, puoi connetterti al websocket della console di debug anche da qualsiasi ambiente diverso da node (ad es. script PHP).


NOTA:questa risposta è del 2008 e probabilmente ora non è corretta; controlla le altre risposte

PrinceXML è il migliore che abbia mai visto (analizza l'HTML normale così come XML/XHTML). Com'è il migliore? Bene, supera l'acid2 test che ho pensato fosse dannatamente impressionante

È tuttavia piuttosto costoso


WeasyPrint produce bei PDF con testo selezionabile e collegamenti ipertestuali.

weasyprint input.html output.pdf

Se usi wkhtmltopdf invece, prova le seguenti opzioni:

wkhtmltopdf --margin-bottom 20mm --margin-top 20mm --minimum-font-size 16 ...

Linux
  1. Come analizzare PHP nei file html?

  2. Come posso creare una cartella HTML pubblica in Ubuntu?

  3. Come posso collegare simbolicamente un file in Linux?

  4. Come posso rimuovere la VECCHIA cronologia da Google Chrome?

  5. Come posso ordinare du -h output per dimensione

Come aggiornare Google Chrome?

Come velocizzare Google Chrome

Come installare Google Chrome su Linux Mint 20 / Linux Mint 20.1

Come installare Google Chrome su Debian 10

Come disinstallare chromium-browser da Ubuntu

Come posso identificare malware contenente estensioni di Chrome in Linux?