Omlouvám se, že jsem objevil tento starý příspěvek, ale při hledání nejlepšího nástroje pro převod HTML/PDF se objevil jako první. V Linuxu je wkhtmltopdf velmi dobrý (bere v úvahu mimo jiné CSS) a GPL.
Aktualizace 2019-05
Celý proces byl naštěstí zabalen do obrázku dockeru od TheCodingMachine:https://github.com/thecodingmachine/gotenberg
Díky tomu je údržba a používání generování souborů PDF na bázi chromu v produkčním prostředí opravdu plynulé a bezproblémové.
Od Chrome 59 je nový bezhlavý režim. Protože všechna ostatní řešení skutečně bojují s novějšími (nebo už ne tak novými) funkcemi CSS, jako je flexbox, bylo to v mém případě jediné řešení, jak vytvořit správný výstup PDF.
Chcete-li vytvořit pdf z místního html souboru, použijte následující příkaz:chrome --headless --disable-gpu --print-to-pdf file:///path/to/myfile.html
.
Pro Mac OS nahraďte chrome
s /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
.
Jedinou nevýhodou, kterou jsem si zatím všiml, je, že (v současné době) nemůžete předat html přes stdin, ale vytvoření dočasného souboru není tak velký problém.
Další informace najdete na https://developers.google.com/web/updates/2017/04/headless-chrome#create_a_pdf_dom
Aktualizace:Jak se ukázalo, chromáci s největší pravděpodobností poskytnou pro tento úkol nějaký modul uzlu, který by nakonec zavrhl bezhlavý režim (https://bugs.chromium.org/p/chromium/issues/detail?id =719921).
Nejlepším řešením by bylo použít přístup založený na uzlech pomocí modulu puppeteer, jak je zdokumentováno na https://developers.google.com/web/updates/2017/04/headless-chrome#node, a vytisknout stránku pomocí příkazu Page.printToPDF , což umožňuje i některé další konfigurace.
Samozřejmě se můžete připojit k websocketu ladicí konzoly z jakéhokoli jiného prostředí než z uzlu (tj. skript PHP).
POZNÁMKA:Tato odpověď je z roku 2008 a pravděpodobně je nyní nesprávná; prosím zkontrolujte ostatní odpovědi
PrinceXML je nejlepší, jaký jsem kdy viděl (analyzuje běžný HTML i XML/XHTML). Jak je to nejlepší? Dobře, prošel testem acid2, o kterém jsem si myslel, že je zatraceně působivý
Je to však poměrně drahé
WeasyPrint vytváří pěkné soubory PDF s volitelným textem a hypertextovými odkazy.
weasyprint input.html output.pdf
Pokud používáte wkhtmltopdf
místo toho vyzkoušejte následující možnosti:
wkhtmltopdf --margin-bottom 20mm --margin-top 20mm --minimum-font-size 16 ...