Ich muss automatisch eine PDF-Datei aus einem vorhandenen (X) HTML-Dokument generieren. Die Eingabedateien (Berichte) verwenden ein recht einfaches, tabellenbasiertes Layout, sodass die Unterstützung für wirklich ausgefallene JavaScript / CSS-Inhalte wahrscheinlich nicht erforderlich ist.
Da ich es gewohnt bin, in Java zu arbeiten, ist eine Lösung vorzuziehen, die leicht in einem Java-Projekt verwendet werden kann. Es muss jedoch nur auf Windows-Systemen funktionieren.
Eine Möglichkeit, die machbar ist, aber keine Ausgabe von guter Qualität liefert (zumindest nicht sofort einsatzbereit ), ist die Verwendung von CSS2XSLFO und Apache FOP zum Erstellen der PDF-Dateien. Das Problem, auf das ich gestoßen bin, war, dass CSS-Attribute zwar gut konvertiert werden, das Tabellenlayout jedoch ziemlich durcheinander ist und Text aus der Tabellenzelle fließt.
Ich habe mir auch Jrex angesehen, eine Java-API zur Verwendung der Gecko-Rendering-Engine.
Gibt es möglicherweise eine Möglichkeit, die gerenderte Seite aus der Rendering-Engine des Internet Explorers abzurufen und automatisch an ein PDF-Drucker-Tool zu senden? Ich habe keine Erfahrung in der OLE-Programmierung in Windows, daher habe ich keine Ahnung, was möglich ist und was nicht.
Haben sie eine Idee?
quelle
Antworten:
Das Flying Saucer XHTML-Renderer-Projekt unterstützt die Ausgabe von XHTML als PDF. Schauen Sie sich hier ein Beispiel an .
quelle
Haben Sie WKHTMLTOPDF ausprobiert ?
Es ist ein einfaches Shell-Dienstprogramm, eine Open Source-Implementierung von WebKit. Beide sind kostenlos.
Wir haben ein kleines Tutorial setzen hier
EDIT (2017):
Wenn ich heute etwas bauen würde, würde ich diesen Weg nicht mehr gehen.
Würde aber verwenden stattdessen http://pdfkit.org/ verwenden.
Wahrscheinlich werden alle Knoten-Abhängigkeiten entfernt, um im Browser ausgeführt zu werden.
quelle
Schauen Sie sich iText an . Es ist ein reines Java PDF-Toolkit, das das Lesen von Daten aus HTML unterstützt. Ich habe es kürzlich in einem Projekt verwendet, als ich Inhalte aus unserem CMS abrufen und als PDF-Dateien exportieren musste, und alles war ziemlich einfach. Die Unterstützung für CSS- und Style-Tags ist ziemlich begrenzt, aber es werden Tabellen ohne Probleme gerendert (ich habe es jedoch nie geschafft, die Spaltenbreite festzulegen).
Das Erstellen einer PDF-Datei aus HTML sieht ungefähr so aus:
quelle
Wenn Sie die Finanzierung haben, geht nichts über Prince XML, wie dieses Video zeigt
quelle
So funktioniert ActivePDF bedeutet, dass Sie wissen, was Sie erhalten, und dass es eine angemessene Unterstützung für das Styling bietet.
Es ist auch eines der wenigen Pakete, die ich gefunden habe (vor ein paar Jahren) und die tatsächlich die verschiedenen CSS-Befehle für Seitenumbrüche unterstützen.
Leider ist die ActivePDF-Software sehr frustrierend - da sie den IE-Browser für Konvertierungen im Hintergrund starten muss, kann sie recht langsam sein und ist auch nicht besonders stabil.
Derzeit gibt es eine neue Version in der Beta, die viel besser sein soll, aber ich hatte noch keine Gelegenheit, sie auszuprobieren. Ich weiß also nicht, wie stark sie verbessert ist.
quelle
Sie können einen kopflosen Firefox mit einer Erweiterung verwenden. Es ist ziemlich nervig, zum Laufen zu kommen, aber es bringt gute Ergebnisse.
Schauen Sie sich diese Antwort für weitere Informationen an.
quelle
Wenn Sie sich die Seitenleiste Ihrer Frage ansehen, werden Sie viele verwandte Fragen sehen ...
In Ihrem Kontext besteht die einfachere Methode möglicherweise darin, einen PDF-Druckertreiber wie PDFCreator zu installieren und die Seite nur in dieser Ausgabe zu drucken.
quelle
Amyuni WebkitPDF kann mit JNI für eine reine Windows-Lösung verwendet werden. Dies ist eine HTML-zu-PDF / XAML-Konvertierungsbibliothek, die für den kommerziellen und nichtkommerziellen Gebrauch kostenlos ist.
Wenn die Ausgabedateien nicht sofort benötigt werden, ist es für eine bessere Skalierbarkeit möglicherweise besser, eine Warteschlange und einige Hintergrundprozesse zu haben, die Elemente von dort übernehmen, konvertieren und dann in der Datenbank oder im Dateisystem speichern.
Es gilt der übliche Haftungsausschluss
quelle