Tut mir leid, diesen alten Beitrag auszugraben, aber er kam bei meiner Suche nach dem besten HTML/PDF-Konvertierungstool zuerst heraus. Unter Linux ist wkhtmltopdf sehr gut (berücksichtigt unter anderem CSS) und GPL.
Aktualisierung 2019-05
Der gesamte Prozess wurde dankenswerterweise von TheCodingMachine in ein Docker-Image gepackt:https://github.com/thecodingmachine/gotenberg
Dies macht die Wartung und Nutzung der Chrome-basierten PDF-Generierung in Produktionsumgebungen wirklich reibungslos und problemlos.
Seit Chrome 59 gibt es einen neuen Headless-Modus. Da alle anderen Lösungen wirklich mit neueren (oder nicht mehr so neuen) CSS-Features wie Flexbox zu kämpfen haben, war dies in meinem Fall die einzige Lösung, um eine ordnungsgemäße PDF-Ausgabe zu erzeugen.
Um ein PDF aus einer lokalen HTML-Datei zu erstellen, verwenden Sie einfach den folgenden Befehl:chrome --headless --disable-gpu --print-to-pdf file:///path/to/myfile.html
.
Für Mac OS ersetzen Sie chrome
mit /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
.
Der einzige Nachteil, der mir bisher aufgefallen ist, ist, dass Sie (derzeit) das HTML nicht über stdin übergeben können, aber das Erstellen einer temporären Datei ist kein so großes Problem.
Weitere Informationen finden Sie unter https://developers.google.com/web/updates/2017/04/headless-chrome#create_a_pdf_dom
Update:Wie sich herausstellt, werden die Chrome-Jungs höchstwahrscheinlich eine Art Node-Modul für diese Aufgabe bereitstellen, das den Headless-Modus schließlich verwerfen würde (https://bugs.chromium.org/p/chromium/issues/detail?id =719921).
Am besten verwenden Sie den knotenbasierten Ansatz mit dem Puppeteer-Modul, wie unter https://developers.google.com/web/updates/2017/04/headless-chrome#node dokumentiert, und drucken die Seite über den Befehl Page.printToPDF , was auch einige zusätzliche Konfigurationen ermöglicht.
Natürlich können Sie sich auch von jeder anderen Umgebung als dem Knoten (z. B. PHP-Skript) mit dem Websocket der Debug-Konsole verbinden.
HINWEIS:Diese Antwort stammt aus dem Jahr 2008 und ist jetzt wahrscheinlich falsch; Bitte überprüfen Sie die anderen Antworten
PrinceXML ist das beste, das ich je gesehen habe (es parst sowohl normales HTML als auch XML/XHTML). Wie ist es am besten? Nun, es besteht den Acid2-Test, den ich für verdammt beeindruckend hielt
Es ist jedoch ziemlich teuer
WeasyPrint erzeugt ansprechende PDFs mit wählbarem Text und Hyperlinks.
weasyprint input.html output.pdf
Wenn Sie wkhtmltopdf
verwenden Probieren Sie stattdessen die folgenden Optionen aus:
wkhtmltopdf --margin-bottom 20mm --margin-top 20mm --minimum-font-size 16 ...