# Rechnung erstellen und Drucken



## Lazybone (17. Feb 2008)

Tag,

ich muss aus Kunden und Artikel Daten eine Rechnung erstellen und diese dan Drucken. Wie kann ich sowas am geschicktestens machen? So dass man das aussehen der Rechnung auch auserhalb des Quellcodes modifizieren kann?

Vielen Dank für die Hilfe.

Gruß
Lazybone


----------



## foobar (17. Feb 2008)

Dafür brauchste eine Reportengine wie Jasper Reports, Birt etc.


----------



## Gast (17. Feb 2008)

Wie Umfangreich sollen die Änderungen am Aussehen sein?

Reportengines wie Jasper oder Birt sind recht groß. Der graphische Reportgenerator ist auch nicht wirklich einfach zu Bedienen. Also einem normalen User würde ich nicht zutrauen mithilfe von Birt das Layout von einem Report anzupassen.

Geringe änderungen z.B anderes Logo oder eine Auswahl zwischen 2 verschiedenen Layouts würden mich eher dazu Bewegen eine Lösung basierend auf z.B iText (PDF-Generierung) und Ausdruck der gleichen bevorzugen.


----------



## Wildcard (17. Feb 2008)

Ich würde OpenOffice.org vorschlagen. Der User ändert einfach das Template und du fügst die Daten ein.


----------



## quippy (18. Feb 2008)

Wenn die Rechnung nicht bunt sein muß, würde ich ein Textdokument drucken und mir eine eigene Vorlagendatei ausdenken, die man anpassen kann.

Es gäbe auch die Möglichkeit, die win32-Libs für Java zu besorgen, mit denen man dann ein Word vernsteuern kann. Ich habe das mal vor Urzeiten gemacht - ich weiß gar nicht, ob es das Zeug noch gibt und wie es hieß. Ist aber auch keine besonders dolle Methode.

Jasper Reports sind schon recht professionell und mächtig (und für Dein Vorhaben eigentlich prädestiniert) und kann vor allem solche Sachen wie Paginierung, Seitenumbrüche, Platzhalter etc. machen.

Pauschal würde mir da auch einfallen, das Dokument als (X)HTML oder als JSP zu erstellen und mit taglibs die Platzhalter zu machen - dann vom Browser darstellen und drucken lassen...


----------



## Wildcard (18. Feb 2008)

quippy hat gesagt.:
			
		

> Es gäbe auch die Möglichkeit, die win32-Libs für Java zu besorgen, mit denen man dann ein Word vernsteuern kann. Ich habe das mal vor Urzeiten gemacht - ich weiß gar nicht, ob es das Zeug noch gibt und wie es hieß. Ist aber auch keine besonders dolle Methode.


Warum Word wenn es das leistungsfähigere OpenOffice.org inklusive Java Schnittstelle für alle Platformen gibt?


----------



## quippy (18. Feb 2008)

Wildcard hat gesagt.:
			
		

> quippy hat gesagt.:
> 
> 
> 
> ...



Nicht umsonst habe ich an den Vorschlag bereits drangeschrieben, daß es keine tolle Methode ist - dem Topicstarter könnte sie aber trotzdem helfen - hängt alles von den Details der Anforderungen ab. Oder gehst Du schon mal pauschal davon aus, daß die Anwender alle OpenOffice haben? Also ich gehe weder davon, noch von der Möglichkeit, daß die Word benutzen, aus - aber nichtsdestotrotz ist es ist eine Alternative.


----------



## Wildcard (18. Feb 2008)

OpenOffice.org kann man einfach ausliefern, sogar als portable Version.
Ebenso kannst du einen Server bereitstellen auf dem OOo läuft. Die Clients kommunizieren dann über ein Socket, oder per Webservice mit OOo und erstellen so ihre Dokumente. Wüsste nicht wie das mit MS-Word funktionieren sollte.


----------



## ms (18. Feb 2008)

Wildcard hat gesagt.:
			
		

> Ebenso kannst du einen Server bereitstellen auf dem OOo läuft.


Auch ohne X11?
Ich hab mit Apache FOP ganz gute Ergebnisse erzielt.

ms


----------



## Wildcard (18. Feb 2008)

Ja, OOo läuft auch Headless


----------



## tuxedo (18. Feb 2008)

Ja, hatte auch schon probleme OpenOffice ganz ohne X11 laufen zu lassen. Oder gibts da einen Trick?

- Alex


----------



## Wildcard (18. Feb 2008)

Du musst den first start wizard deaktivieren. Wahlweise in dem du ein Profil verwendest, bei dem der Wizard schon durchlaufen wurde, oder durch einen Kommandozeilenparameter


----------



## Gast (18. Feb 2008)

ich wollte ohne externe programme arbeiten ich habe mir ein Programm getippelt das mit jPMdbc von alex0801 die Daten aus einer DB läd und daraus eine Rechnung erzeugen soll die gerdruckt werden soll nen export als PDF wäre auch net schlecht daher mal die möglichkeit  von Gast mit iText anschauen


----------



## quippy (19. Feb 2008)

Wildcard hat gesagt.:
			
		

> OpenOffice.org kann man einfach ausliefern, sogar als portable Version.
> Ebenso kannst du einen Server bereitstellen auf dem OOo läuft. Die Clients kommunizieren dann über ein Socket, oder per Webservice mit OOo und erstellen so ihre Dokumente.



Das ist ja alles ganz toll und richtig, aber wenn der Auftraggeber kein OpenOffice haben will, was dann? Wenn er auch nicht bereit ist, einen Server aufzusetzen oder einen vorhandenen dazu zu nutzen? Wenn aber auf den Clients überall Word drauf ist (prinzip "Ehdakosten") und die Mitarbeiter das bedienen können - dann will er vielleicht das als Basis nutzen oder ist Vorschlägen in diese Richtung wesentlich offener.



			
				Wildcard hat gesagt.:
			
		

> Wüsste nicht wie das mit MS-Word funktionieren sollte.



Da gibt's viele Möglichkeiten. Eine unter vielen wäre Apache POI

Und noch ein Zitat von Abraham Maslow: "Wenn mein einziges Werkzeug ein Hammer ist, sieht jedes Problem wie ein Nagel aus."

Du hast nur "word" gelesen und schon war Deine Open Source-Seele verletzt - und nun beginnt der Kreuzzug, weil Word ja wesentlich schlechter ist. Statt hier 'reinzuplatzen mit



> Warum Word wenn es das _leistungsfähigere_ OpenOffice.org inklusive Java Schnittstelle für alle Platformen gibt?



wäre ein Post der Art



> ich empfehle, sich auch mal Open Office anzusehen, da das eine Java-Schnittstelle hat



echt angebrachter gewesen und hätte nicht von so viel Engstirnigkeit gezeugt.


----------



## Wildcard (19. Feb 2008)

> Da gibt's viele Möglichkeiten. Eine unter vielen wäre Apache POI


Mit POI kannst du in beschränktem Rahmen Dateien anlegen, was nicht ganz das gleiche wie eine Socket/Webservice Kommunikation ist, von der eigentlich die Rede war.



> Das ist ja alles ganz toll und richtig, aber wenn der Auftraggeber kein OpenOffice haben will, was dann? Wenn er auch nicht bereit ist, einen Server aufzusetzen oder einen vorhandenen dazu zu nutzen? Wenn aber auf den Clients überall Word drauf ist (prinzip "Ehdakosten") und die Mitarbeiter das bedienen können - dann will er vielleicht das als Basis nutzen oder ist Vorschlägen in diese Richtung wesentlich offener.


Der wichtige Unterschied zwischen unseren beiden Empfehlungen ist, das du Prämissen ins Spiel bringst, während ich eine Möglichkeit genannt habe die auf möglichst vielen Systemen in möglichst vielen Szenarien zum Einsatz kommen können.
Davon abgesehen ging es nicht darum OOo auf allen Client Rechnern zu platzieren, sondern es als Reporting Backend zu verwenden, das Berichte nach odt, pdf, doc und nach vielen anderen Formaten exportiert.


> Du hast nur "word" gelesen und schon war Deine Open Source-Seele verletzt - und nun beginnt der Kreuzzug, weil Word ja wesentlich schlechter ist.


Nun, Word ist tatsächlich schlechter. Powerpoint und Excel sind dagegen etwas besser. Meine 'Open-Source-Seele' ist damit sicherlich nicht verletzt, es macht IMO einfach wenig Sinn ein Programm vorzuschlagen, das sich von Java nicht (bzw. kaum )bedienen lässt, das man nicht ausliefern kann (da kommerziell) und das nichtmal auf allen Zielplattformen läuft.

Und die von dir 'empfohlene' Antwort lasse ich mir sicherlich nicht in den Mund legen, da ich fachlich Begründen kann, warum OpenOffice.org für diesen Anwendungsfall sogar deutlich leistungsfähiger ist.

Davon abgesehen ist diese Diskussion völlig Nutzlos, da der OP bereits erklärt hat keine weiteren Programme einsetzen zu wollen.



> ...echt angebrachter gewesen und hätte nicht von so viel Engstirnigkeit gezeugt.


Scho' recht...  :roll:


----------



## Wolfgang Lenhard (19. Feb 2008)

Ich persönlich bevorzuge, Reports in xhtml zu schreiben und dann per XHTMLRenderer auszugeben. Templates kann man dynamisch einbinden und somit das Aussehen verändern. Der Nachteil ist, dass xhtml keine Fehler verzeiht und sehr leicht bei nicht gefilterten Sonderzeichen etc. ins stolpern kommt. Das hat mich bereits einige Nerven gekostet und man sollte alle Eingaben auf Herz und Nieren prüfen.
Drucken und PDF-Export ist dann über den PDFRenderer möglich.
Es kommt natürlich auf die Applikation an, aber in den meisten Fällen ist vermutlich der Umweg über OO etwas zu überdimensioniert, zumal 150 MB (oder so) mitzuliefern, um dann einen Report erstellen zu können doch ein ganzer Packen ist. Im Vergleich dazu kommt man bei XHTMLRenderer und PDFRenderer mit unter 2MB aus.

Ciao,
   Wolfgang


----------



## Wildcard (19. Feb 2008)

Wolfgang Lenhard hat gesagt.:
			
		

> Es kommt natürlich auf die Applikation an, aber in den meisten Fällen ist vermutlich der Umweg über OO etwas zu überdimensioniert, zumal 150 MB (oder so) mitzuliefern, um dann einen Report erstellen zu können doch ein ganzer Packen ist. Im Vergleich dazu kommt man bei XHTMLRenderer und PDFRenderer mit unter 2MB aus.


Das sehe ich genauso. Es kommt auf den Anwendungsfall an. Um dem Kunden die Möglichkeit zu geben einfach eigene Templates zu verwenden, oder auch Word Dokumente zu erstellen ist es allerdings eine hervorragende Möglichkeit.


----------



## Lazybone (1. Mrz 2008)

ich habe mich mal für iText enschieden. Ich habe aber da noch ne Frage undzwar 
ich erzeuge mir eine Tabelle und habe aber das Problem das die Table oben vom Blatt anfängt wie stelle ich das bei einer Table und bei Paragraph usw das ich eine belibige stelle angebe sprich X und Y Koordinaten.

Gruß
Lazybone


----------



## Gast (1. Mrz 2008)

In iText gibt es mehrere Table-Typen, die einen verschiedenen Leistungsumfang haben. Wenn ich mich recht entsinne Table, PDFTable und die PDFPTable. Wobei ich mich meine das PDFPTable das Mittel der Wahl sein sollte.


----------



## Guest (16. Mrz 2008)

soo nachdem ich mit in iText eingearbeitet habe und auch die Rechnung hinbekommen habe habe ich gesehen das mann nicht drucken kann ohne eine andere Libary -.- 

Ich habe mir darauf hin JasperReports angeschaut. Das würde zwar das erfüllen wass ich brauche ist aber für mich zu komplex. Gibt es noch eine gute alternative Lösung? Am besten mit der Lizenz GPL


----------

