# Drucken über Java oder OOo empfehlenswert?



## JSteinhilber (12. Mai 2008)

Zunächst ein Hallo an alle Forumsteilnehmer.
Ich will mit meiner Anwendung folgende Terminliste drucken:
Terminliste.pdf
Die erforderlichen Daten stehen via MySQL in einer JXTable bereit.
Die Terminliste soll auf einer oder mehreren A5(quer)-Seiten gedruckt werden.

Ist für derlei Aufgaben das Drucken über Java, oder eher der Ausdruck über OpenOffice.org geeignet.
(Sofern in OpenOffice.org für diese Aufgabe überhaupt ein geeignetes Template erstellt werden kann, das auch mehrseitiges drucken zuläßt)

Grüße an alle
Jürgen


----------



## foobar (12. Mai 2008)

Wenn du nicht mit einem Reportgenerator arbeiten willst, würde ich das mit Hilfe von Swing ausdrucken.


----------



## JSteinhilber (12. Mai 2008)

> Wenn du nicht mit einem Reportgenerator arbeiten willst


Was für Reportgeneratoren für Java (die so etwas leisten könnten) sind denn empfehlenswert?



> würde ich das mit Hilfe von Swing ausdrucken.


Nun habe ich vollends 3-7 Fragezeichen in den Augen.

Gruß
Jürgen


----------



## foobar (12. Mai 2008)

> Was für Reportgeneratoren für Java (die so etwas leisten könnten) sind denn empfehlenswert?


JasperReport + iReport ist ganz brauchbar
http://www.jasperforge.org/jaspersoft/opensource/business_intelligence/jasperreports/



> würde ich das mit Hilfe von Swing ausdrucken.



http://www.java-forum.org/de/viewtopic.php?t=67237&highlight=jtable+print


----------



## JSteinhilber (12. Mai 2008)

Hallo foobar,
herzlichen Dank für Deine Unterstützung.

Würdest du für meine Zwecke OOo grundsätzlich als eher ungeeignet einstufen?  Und sofern ja - weshalb?
Nur wegen der Größe von OOo, oder ist es auch im handling "ungeschickter" als dieses JasperReports?

Grüße
Jürgen


----------



## Wildcard (12. Mai 2008)

Das lässt sich problemlos mit OOo erstellen. Und da du sowieso schon eine OOo Anbindung hast, würde ich es auch dafür verwenden.


----------



## JSteinhilber (12. Mai 2008)

Hi Wildcard,


> Das lässt sich problemlos mit OOo erstellen.


...aha, na dann ist ja alles in Butter.....

Ehrlich gesagt würde ich es auch am liebsten mit OOo lösen. Wenn ich wüßte wie ich's könnte...
Ich habe ganz stümperhaft versucht in OOo eine Vorlage zu erstellen und die beiden Terminspalten mit Einfügen->Feldbefehl->Andere->Variable und dann eben Termin1-Termin20 definiert.
So jetzt habe ich eben eine Vorlage und kann damit glücklich werden.
Ob das aber superklasse oder superdoof ist weiß ich genauso wenig wie ich weiß ob mit diesem Teil ohne weiteres eine Seite 2 erstellt werden kann, bzw. wie evtl. mit NOA die Variablen mit meinen Werten gefüllt werden können.

(Da ich weder eine Ahnung vom Drucken mit Java noch einen Plan von OOo habe, ist das alles nicht so ganz einfach.
Meine etwas unbedarfte Nachfrage fand im Grunde nur deshalb statt, damit ich weiß in was ich mich effektiver Weise zuerst einarbeiten sollte)

Frisch zurück aus dem Urlaub grüße ich Dich herzlich
Jürgen


----------



## Wildcard (12. Mai 2008)

Nun, da du wohl nicht weißt wie viele Termine vorliegen können, sind Variablen wohl eher ungeeignet.
Ich hätte vermutlich einfach eine Tabelle angelegt.


----------



## JSteinhilber (12. Mai 2008)

> Nun, da du wohl nicht weißt wie viele Termine vorliegen können, sind Variablen wohl eher ungeeignet.
> Ich hätte vermutlich einfach eine Tabelle angelegt.



Das hatte ich mir zunächst auch überlegt.
Aber in der naiven Hoffnung das Handling mit Variablen wäre einfacher, habe ich eben das komische Template erstellt.
Der Plan war die Variablen mit dem Attribut (verstecken) auszustatten und dann eben programmgesteuert die Variablen (1-20) irgendwie mit den Terminen  (=Werten) zu füllen die existieren.
Sind weniger als 20 Termine vorhanden - auch gut, die Variablen sind ja versteckt - sind mehr als 20 Termine vorhanden müßte irgendwie ein Seitenwechsel stattfinden und ein Zähler wieder auf Termin1 zurückgesetzt werden.

Aber: Wenn Du als Crack so spontan sagst Tabelle - na dann schau ich doch glatt mal nach Tabelle.
Lassen sich Tabellen eigentlich über NOA anlegen, erweitern etc. und eignet sich dafür eine Vorlage (=Termplate) oder ist es vernünftiger jede Seite komplett zu generieren?

Gruß
Jürgen


----------



## Wildcard (12. Mai 2008)

Klar, du kannst Tabellen erstellen, manipulieren, vergrößern, verkleinern,...


----------



## JSteinhilber (12. Mai 2008)

Und das ganze als Vorlage, macht das Sinn wg. Kopf- und Fußbereich ?
Sofern Vorlage ja, würdest Du die Tabelle dann bereits als ganzes in der Vorlage anlegen oder besser dynamisch erweitern?

Gruß und sorry für die erneute Fragerei.
Jürgen


----------



## Wildcard (12. Mai 2008)

Ja, ein Vorlagendokument bietet sich an. Du kannst den statischen Teil wohl einfach als Kopf und Fußzeile einrichten und dann programmatisch eine Tabelle anlegen.


----------



## JSteinhilber (13. Mai 2008)

Ist es möglich OOo im Hintergrund die Tabelle aufbereiten zu lassen und diese dann ebenfalls im Hintergrund auszudrucken?
Bei meinem Test öffnet sich OOo grundsätzlich sichtbar im Vordergrund...

Gruß 
Jürgen



```
private void bestueckeOOo(){
	try {
		IDocumentService documentService = Reha.officeapplication.getDocumentService();
		//Den Dateinamen und Pfad der Vorlagendatei später aus INI-Datei auslesen
		String url = "C:\\RehaVerwaltung\\vorlagen\\terminliste1.ott";
		IDocument document = documentService.loadDocument(url);
		ITextDocument textDocument = (ITextDocument)document;
		// Ab hier die Tabelle bestücken und ausdrucken
		//..........
		// Anschließend die Vorlagendatei schließen
		if (Reha.officeapplication.getDocumentService().getCurrentDocuments()[0] != null){
			Reha.officeapplication.getDocumentService().getCurrentDocuments()[0].close();
			System.out.println("Fenster geschlossen");
		}			
	} catch (OfficeApplicationException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (DocumentException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}
```


----------



## Wildcard (13. Mai 2008)

Du musst das Document 'hidden' laden

```
DocumentDescriptor.DEFAULT_HIDDEN
```


----------



## JSteinhilber (13. Mai 2008)

Gracie Wildcard.


----------



## JSteinhilber (14. Mai 2008)

Zunächst: 
Mein Vorhaben mit OOo (in Kombination mit NiceOfficeAccess) einen Report im Hintergrund zu generieren und diesen dann auszudrucken, hat - Dank der erneuten Hilfe von Wildcard - wunderbar geklappt.
Tabellen zur Laufzeit generieren, befüllen, Textteile suchen, ersetzen, Drucker ermitteln und wechseln -> absolut kein Problem.

Selbst meine Bedenken, daß die Aufbereitung mittels OOo vermutlich etwas langsam von statten gehen würde, wurden vollständig ausgeräumt. 

Alles in Allem bin ich erneut einen (kleinen) Schritt weiter gekommen auf dem Weg zum absoluten OOo-Fan und kann nur jedem Java-Entwickler raten sich mit dieser Materie (OOo) zu befassen. Ein besseres und vollständigeres Werkzeug dürfte es vermutlich kaum geben.

Edit: (Ich bin zwar ein absoluter "Java-Frischling", habe aber jede Menge Erfahrung mit anderen Textprozessoren und diversen Report-Generatoren. Und im direkten Vergleich, schlägt OOo alles bisher Gesehene um Längen!)

Grüße
Jürgen


----------

