Motivation und Anforderungen
Die Erstellung hochwertiger Berichte ist in modernen Businessanwendungen eine essenzielle Anforderung. Es sollen Berichte aus den vorhandenen Daten generiert werden, die nicht nur funktional, sondern auch optisch ansprechend sind und das Corporate Design des Unternehmens widerspiegeln.
Technisch generierte Dokumente, die lieblos oder generisch wirken, genügen diesen Ansprüchen nicht. Stattdessen sollen Berichte Professionalität und Wiedererkennbarkeit vermitteln.
Wichtige Anforderungen dabei sind:
- Benutzerfreundlichkeit: Templates sollen im WYSIWYG-Modus mit Microsoft Word einfach erstellt, angepasst und erweitert werden können, ohne tiefere technische Kenntnisse zu erfordern.
- Wiederverwendung bestehender Vorlagen: Vorhandene Word-Templates sollen genutzt werden, um die Corporate Design-Vorgaben konsistent einzuhalten.
- Flexible Anwendung: Je nach Anwendungsfall liegen Berichten unterschiedliche Datenstrukturen zugrunde. Demzufolge sind die "Berichtsarten" vielfältig (bspw. Testergebnisse, Inspektionsberichte, technische Dokumentationen, Sprint-Backlogs oder Auditberichte).
- Minimierung des Aufwands für die Programmierung: Der Fokus soll auf der Integration und Darstellung der Daten liegen und nicht auf der Programmierung von Layouts.
- Export als PDF: PDF ist das Standardformat für den Datenaustausch mit Stakeholdern. Berichte sollen daher auch als PDF verfügbar sein.
- Unterstützung von HTML-Daten aus Rich-Text-Editoren (RTE): Texte, die in webbasierten Anwendungen mit RTEs erstellt werden, sollen entsprechend formatiert in die Berichte übernommen werden können.
Die nachstehende Betrachtung erfolgte auf Basis der folgenden technischen Rahmenbedingungen: Java-"Ökosystem"; Linux-Servern; Docker.
Evaluation von Lösungsansätzen
Die Suche nach einer geeigneten Lösung beginnt stets mit einer fundierten Recherche. Hierbei müssen existierende Werkzeuge und Ansätze hinsichtlich ihrer Funktionen, Lizenzmodell und Kosten evaluiert werden. Besonders in der Java-Welt gibt es zahlreiche Bibliotheken und Frameworks, die Dokumentenerstellung unterstützen. Die Herausforderung bestand darin, eine Lösung zu finden, die den spezifischen Anforderungen entspricht.
Ein wertvolles Werkzeug in der Recherche ist mittlerweile ChatGPT. Mit Hilfe solcher KI-basierten Tools lassen sich relevante Informationen schnell und effizient finden. Sie bieten Inspiration, verweisen auf geeignete Technologien und helfen, eine fundierte Entscheidungsgrundlage zu schaffen.
Identifizierte Lösungen
Durch die Recherche wurden mehrere Tools und Bibliotheken identifiziert, die sich für die Erstellung und Verarbeitung von Berichten in Java-basierten Anwendungen eignen:
- docx4j
- Apache POI
- Aspose Word (kommerziell)
- OpenPDF (iText "Fork")
- poi-tl (basierend auf Apache POI)
- JasperReports
- HTML/CSS zu PDF (html2pdf) Lösungen wie bspw. Flying Saucer, wkhtmltopdf
Bewertung
Tool | Lizenz | Bewertung |
---|---|---|
docx4j | open source (ASLv2) | Nachbau des Templates und Aufbau der Inhalte zu aufwändig. Zu viel Programmierung; ggf. abweichendes Corporate Design, wenn es nachgebaut wird. |
Apache POI | open source (Apache License 2.0) | identisch zu docx4j |
JasperReport | open source (GNU LPGL 3.0) | Spezielles Format (JRXML) - kein Standard; unklar wie genau lizensiert wird, v. A. für den kommerziellen Einsatz |
OpenPDF | open source (MPL 2.0 oder GNU LPGL 2.1) | identisch zu docx4j und Apache POI |
Aspose Word | kommerziell | teuer, v.A. für den kommerziellen Einsatz in Anwendungen / Produkten |
html2pdf (Flying Saucer, wkhtmltopdf, ...) |
open source (div) | einfach, aber der Nachbau von Corporate Word Template weicht i.d.R. immer ab; Kopf-/Fußzeilen nicht möglich |
poi-tl (poi-template-language) | open source (Apache License 2.0) | adressiert exakt das Problem, einfach neue Dokumente auf Basis von Word Templates und Daten zu erzeugen; kein echter "Hersteller", sondern klassische Open Source Erweiterung von Apache POI |
Auswahl
poi-tl erwies sich in der kurzen Betrachtung als die aussichtsreichste Lösung, da es genau auf die Anforderungen zugeschnitten ist und
die Nutzung von Word-Templates ermöglicht, die unkompliziert mit Daten befüllt werden können.
Um die Leistungsfähigkeit von poi-tl zu evaluieren, wurde ein umfassender Praxistest durchgeführt, der Achtung Spoiler: erfolgreich verlief.
In einem weiteren Blogeintrag habe ich die Implementierung und meine gewonnenen Erfahrungen beschrieben. Darin sind ein paar wertvolle Hinweise zur Entwicklung, Anpassung und Vermeidung bzw. Lösen von Problemen enthalten.