Dokumente erstellen, füllen und drucken

Hallo,

ich möchte aus einer Swing-Anwendung heraus Dokumente (Briefe) erstellen, mit Daten füllen und dann drucken. Speichern ist erst mal nicht vorgesehen, sondern am besten direkt zum Drucker schicken. Ich hatte vor einiger Zeit mal verschiedene Möglichkeiten durchprobiert, mit denen ich aber nicht so zufrieden war. Um das ganze auch nutzerfreundlich zu machen, sollten am besten Dokumentvorlagen existieren, welche man dann über Platzhalter mit den Daten (Name, Anschrift, Datum, Textbausteine, Brieftext…) füllen kann. Ich weiss nicht, ob man das mit OpenOffice/LibreOffice oder Word hinkriegen kann…

Versucht hatte ich (vor einiger Zeit) mal

  • Verbindung zwischen OpenOffice und Java (UNO/URE?)
    -> Fand ich aber ziemlich umständlich und kompliziert; keine zufriedenstellende Ergebnisse

  • Vorlagen mit OpenOffice erstellt, Platzhalter eingefügt, Dokument entpackt (mit TrueZip?),
    Dokument zeilenweise durchgegangen und Platzhalter mit Text ersetzt, Dokument wieder gepackt
    -> Auch ziemlich umständlich, kam aber dem gewünschten Ergebnis ziemlich nahe

  • Versuch mit iReport (JasperReports)
    -> Fand den Report-Designer ziemlich kompliziert, und für “normale” Anwender nur schwer bedienbar.
    Auch die Ergebnisse waren nicht oder nur schwer hinzukriegen

Jetzt wollte ich mal fragen, ob ihr mir da was anderes/besseres empfehlen könnt? Wie gesagt, am besten wäre es, wenn ich verschiedene Dokumentvorlagen anlegen kann, die dann durch die Anwendung gefüllt werden und ausgedruckt werden können. Vielleicht hat ja wer nen Tip für mich, was man da nehmen könnte…

Vielen Dank schonmal
Camino

Hallo Camino,

schau dir mal folgende Lib an:
https://xhtmlrenderer.java.net/

Habe ich selber zwar noch nie verwendet, aber damit kann man auch direkt drucken:
http://pigeonholdings.com/projects/flyingsaucer/R8/doc/guide/users-guide-R8.html#xil_30

Evtl. kannst du auch mal nach einer Lib für RTF suchen. Ich habe zwar auf die schnelle nichts gefunden, was auch direkt drucken kann, aber…

Nachtrag:
Schau dir http://code.google.com/p/jrtf/ mal an.
Wenn du keine aufwendigen Formatierungen brauchst könnte RTF eine gute Lösung sein. Käme deinem 2ten Versuch ziemlich nahe.
Kann allerdings nicht selber drucken.

MfG
hansmueller

Wollte dir grade zu Java FX - HTML mit CSS support raten, aber das Forum schluckt schon wieder meine posts :frowning:

Danke für die Tipps. Werde ich mir mal anschauen.

Ich hab mir gerade auch nochmal die neueste Version von JasperReports und iReport geruntergeladen. Muss ich mir auch nochmal anschauen. Ist schon ne Weile her, und eine Version früher, als ich zum letzten mal damit herumexperimentiert hatte. Damals fand ich das etwas zu kompliziert, vor allem wenn die Anwender mit dem ReportDesigner die Vorlagen ändern können sollen. Vielleicht hat sich ja da was verbessert.

So, hab jetzt ne Weile mit Jasper Reports und iReport herumexperimentiert. Für Berichte (Auflistungen von Daten aus der Anwendung oder einer Datenbank) ist das wohl ziemlich brauchbar und gut, aber für Briefe (mehrseitig oder auch Serienbriefe) eigentlich nicht unbedingt geeignet. Auch müssen sich spätere Benutzer entweder in iReport einarbeiten, oder die Templates mit XML bearbeiten, was man ihnen nicht unbedingt zumuten möchte. Aber deswegen heisst es ja auch Jasper Reports und nicht Jasper Documents…

Ich bin nun eher auf der Suche nach Frameworks oder Bibliotheken, mit denen man Dokumente (z.B. ODF) einlesen, Platzhalter füllen und dann wahlweise ausdrucken oder abspeichern kann. Am besten ohne OpenOffice zu benutzen. Dann könnte ich nämlich einige Vorlagen mit Platzhaltern erstellen, welche auch von “normalen” Benutzern problemlos geändert und angepasst werden können. Ich hatte das ja schonmal “per Hand” mit TrueZip gemacht, da die ODF-Dateien ja nur gezippte XML-Dateien sind. Aber das mit dem Ausdrucken direkt aus der Anwendung hatte irgendwie noch nicht geklappt. Hat irgendwer so etwas schonmal gemacht und kann mir Tipps geben?

Gefunden hatte ich dazu bisher folgendes:
jOpenDocument
Apache ODF Toolkit

Ich bin mal zufällig darauf gestoßen, habe aber noch nicht die Zeit gefunden mich damit zu beschäftigen. Möglicherweise wirst du hier fündig.

Danke für den Link. Muss ich mir mal genauer anschauen. Da wird ja auch über UNO zwischen LibreOffice und Java kommuniziert. Das hatte ich mir vor längerer Zeit schon mal angeschaut (mit OpenOffice und UNO) und bin da nicht wirklich weitergekommen. Aber vielleicht bleibt mir nicht viel anderes übrig, als mich da nochmal reinzuarbeiten. Wie gesagt, eigentlich brauch ich garnicht so viel: Dokument liegt als Template vor, einlesen, Platzhalter mit Daten aus Java-Anwendung füllen, ausdrucken (am besten ohne vorher abzuspeichern).