Stabile kostenlose (Open Source) Java-PDF-Bibliothek nur für Textabsätze

In einem Projekt, an dem ich arbeite, muss ich ein PDF generieren. Dieses PDF enthält nur Text, und der Inhalt des Textes ist ziemlich variabel. Der größte Teil des Textes sollte in separaten Absätzen gedruckt werden, die untereinander gedruckt werden. Falls der Absatz nicht auf eine Seite passt, sollte er einfach auf der nächsten hinzugefügt werden. Es sollte kostenlos (wie Bier, vorzugsweise auch Open Source) und stabil sein (also kein Spielzeugprojekt).

Nebenbei bemerkt, das Projekt selbst wird kommerziell genutzt. Benutzer können einen API-Aufruf senden, und es wird ein bestimmtes PDF für sie generiert (auf dessen Inhalt wir uns spezialisiert haben).

Antworten (2)

Laut Was ist die beste PDF-Open-Source-Bibliothek für Java? [geschlossen] drüben bei StackOverflow könnte Ihre beste Wette iText sein :

iText ist eine PDF-Bibliothek, mit der Sie Dokumente im Portable Document Format (PDF) ERSTELLEN, ANPASSEN, PRÜFEN und PFLEGEN können: - Erstellen Sie Dokumente und Berichte auf der Grundlage von Daten aus einer XML-Datei oder einer Datenbank - Erstellen Sie Karten und Bücher und nutzen Sie dabei zahlreiche interaktive in PDF verfügbare Funktionen - Lesezeichen, Seitenzahlen, Wasserzeichen und andere Funktionen zu bestehenden PDF-Dokumenten hinzufügen - Seiten aus bestehenden PDF-Dateien teilen oder verketten - Interaktive Formulare ausfüllen - Dynamisch generierte oder manipulierte PDF-Dokumente an einen Webbrowser liefern

iText wird von Java-, .NET-, Android- und GAE-Entwicklern verwendet, um ihre Anwendungen mit PDF-Funktionalität zu erweitern.

Mehrere iText-Ingenieure unterstützen das Projekt aktiv auf StackOverflow: https://stackoverflow.com/questions/tagged/itext

Diese Bibliothek scheint für den persönlichen Gebrauch kostenlos zu sein.

Es scheint jedoch, dass iText für die kommerzielle Nutzung nicht kostenlos ist. Die Verwendung erfolgt in einer kommerziellen API (im Grunde wird eine bestimmte Art von Dokumenten für den Benutzer erstellt).
@Kristof Ich sehe, dass Sie in diesem Teil über die Notwendigkeit für die kommerzielle Nutzung bearbeitet haben :-). Sie können den Referenzlink überprüfen und sehen, ob Apache FOP eine bessere Alternative für Sie ist
Ja, ich habe es aus Gründen der Übersichtlichkeit bearbeitet :)
Ich habe Apache FOP überprüft, nachdem ich damit herumgespielt habe, scheint es definitiv eine großartige Lösung zu sein. Auch verdammt schnell, danke!
@Kristof Könnten Sie eine Antwort auf Apache FOP schreiben, was es tut und wie es Ihren Bedürfnissen entspricht?

Apache FOP in Kombination mit Freemarker ist eine großartige Lösung zum Einrichten eines einfachen Templating-Systems zum Generieren von PDFs mit nicht viel mehr als Text und einigen einfachen Bildern darauf.

Freemarker wird verwendet, um dynamische Vorlagen zu erstellen, die zu einem XML im folgenden Stil führen:

<letter>
    <paragraph>Some static content always in here</paragraph>
    <paragraph>Bla bla bla</paragraph>
    <paragraph>Foo foo foo</paragraph>
</letter>

Wo das bla bla bla und das foo foo foo tatsächlich aus einer Liste in einem POJO stammen. FOP kann auch verwendet werden, um dieses XML zu erstellen (oder eine vollständig dynamische Vorlage haben), aber es fühlt sich spröder an, dies zu tun.

Apache FOP wird dann verwendet, um aus dem PDF ein XML zu erstellen. Sie teilen FOP im Grunde mit, dass es für einen "Absatz" einen Textblock im PDF mit bestimmten Spezifikationen erstellen muss.

Auf diese Weise können Sie es so verwenden, als würden Sie CSS auf einer gewöhnlichen Webseite verwenden, und die Inhaltsgenerierung und -struktur (Freemarker) und die endgültige Präsentation (Apache FOP) vollständig aufteilen.

Das klingt nach einer netten Lösung, könnten Sie bitte Links zu Freemarker und Apache FOP hinzufügen?
Für mich eine ziemlich saubere Lösung. Wenn ich zusätzliche Arten von Dokumenten benötige, füge ich einfach Freemarker-Vorlagen hinzu. Wenn ich zusätzliche Vorlagenvisualisierungen benötige (wie eine bestimmte Art von Absatz), füge ich einfach etwas zur FOP-Vorlage hinzu. Außerdem beeinflusse ich durch die Bearbeitung meiner FOP-Vorlage jede Art von generiertem Dokument.