# Rechnungen erstellen per Java auf Din A4



## Rapt0r (26. Jun 2007)

Hallo!

Ich plane ein Programm für eine Firma eines bekannten von mir zu schreiben. Es soll einfach alle wichtigen Daten speichern, wie z.B. monatlicher Umsatz, usw. und dann daraus Statistiken erstellen mit Diagrammen. Ich weiß auch schon wie ich das ganze angehen soll bzw. werde. Das einzige wovon ich keine Ahnung habe wie ich das lösen soll wäre das Erstellen von Rechnungen. Bis jetzt wurde dies immer über Microsoft Excel (früher mit Word) getätigt. Ich frage mich, ob es in Java möglich wäre ein "Arbeitsblatt" zu erzeugen im Format DIN A4 und dann darauf zu schreiben (Text muss natürlich auch formatiert werden können). Oder wäre es besser, wenn ich die nötigen Daten zur erstellung der Rechnung in XML speichere und dann daraus ein PDF exportiere um die Rechnung im Nachhinein auch drucken zu können.

mfg Rapt0r


----------



## solnze (26. Jun 2007)

hm pauschal wuerd ich sagen schreibs in eine pdf.


----------



## Guest (26. Jun 2007)

Hmm.... jop werd gucken.
Ist es eigentlich auch möglich die Daten falls sie in XML vorliegen per CSS so zu formatieren, dass sie auf einem A4 Blatt sind? Diese könnte ich dann ausdrucken.


----------



## Wildcard (26. Jun 2007)

Es gibt 4 grundsätzliche Möglichkeiten:
1. Ein Reporting Tool
2. Ein Office Programm (dank der Java API bietet sich OpenOffice an)
3. PDF APIs wie zB iText
4. LaTeX


----------



## s-markus (26. Jun 2007)

5. HTML, vielleicht sogar mit JSP ... 

LaTeX sieht in jedem Fall am Schoensten aus.


----------



## SnooP (27. Jun 2007)

Hm... sehr subjektiv  ... für Rechnungen würde ich persönlich nicht latex nutzen wollen (obwohl ich durchaus Verfechter von Tex bin...).

Ich kann nur immer wieder FO empfehlen. Damit kannst du aus xml sowohl pdfs erzeugen, als auch direkt drucken. Java-Print-Api ist allerdings zugegeben manchmal etwas merkwürdig... und auch FOP (zum Verarbeiten der FO-Dokumente) von Apache kann manchmal rumzicken - aber letztlich ist es imho das vernünftigste um sowas zu realisieren. Und wenn man auf JSTL verzichten will zur Transformation kann man fürs Templating auch noch Velocity verwenden  - aber ich wiederhole mich *g*


----------



## Wildcard (27. Jun 2007)

Persönlich finde ich die OpenOffice API sehr nett. Ich habe damit sehr schnell richtig gute Ergebnisse produziert und man kannt (sowohl programmatisch als auch manuell) in praktisch jedes bekannte Format exportieren.
Ausserdem sind die Leute in aller Regel sehr glücklich wenn sie in einem WYSIWYG Editor ihre Templates erstellen können  :wink:


----------



## Gast (27. Jun 2007)

wenn die daten als xml vorliegen, könnt man auch einfach ne xsl dazuliefern, die das ganze in nem browser anständig darstellt.


----------



## MasterEvil (27. Jun 2007)

Das gleiche Problem hatte ich auch mal und für die OpenOffice API hatte ich irgendwie nix gescheites gefunden. Nur irgendwas mit Server installieren und so was ja für ne simple Rechnung erstellen mehr als übertrieben ist.

Ich hatte mir dann was zusammen gebastelt womit ich nen OpenOffice-Dokument selbst abändern konnte.
Die Dateien sind ja auch nur ZIP-Dateien und drinnen sind XML Dateien mit den Informationen.

Die Struktur der OO XML-Dateien ist allerdings totaler Müll 
Ich kann ja heute Abend mal gucken ob ich die Klassen noch hab und dann mal hier posten mit Beispiel.


----------



## Rapt0r (27. Jun 2007)

Hmm oke

Wildcard wie ist das gemeint mit den OpenOffice APIs? Kann ich dann irgendwie im Programmcode Text einfügen lassen in ein OpenOffice-Dokument? Beispiele oder ein Tutorial (falls es eins gibt) wären nett..

mfg Woody..


----------



## Wildcard (27. Jun 2007)

Ja, kannst du, und ist ganz simpel.
Allerdings muss dir der Pfad zur Anwendung bekannt sein, oder du sprichst eine OpenOffice Instanz auf einem Server an.
Schau die dazu mal NEO (Nice Office Access)an,  das ist ein Wrapper um die komplexe UNO API.
Es bietet sich an eine OpenOffice Dokumentvorlage zu laden und dann im Dokument Paragraphen zu erstellen denen du Formatvorlagen zuweist.
Das Basisformular (Kopfzeile, Fußzeile,...) kannst du direkt in OpenOffice erstellen.
Mit Java iterierst du dann über das Template Dokument bis zum relevanten Punkt und fügst deinen Text ein. 
Es sollte auch möglich sein direkt im Dokument Variablen einzutragen die du nur noch befüllen musst, aber das habe ich noch nicht versucht.


----------



## Waldi (29. Jun 2007)

Also ich würde dir Jasper empfehlen. Musst mal googeln. Mit iReport kannst du einfach und flexibel reports entwerfen. die Einbindung in Java Programme ist auch sehr einfach. Einfach en paar Zeilen und der Pfad zur Entwurfsdatei und fertig. Der Export in verschiedene Formate funzt auch 1a.


----------

