Seite 1 von 1

Java und UNO

Verfasst: Mo 11. Nov 2013, 00:36
von Camino
Hallo,

ich hab eine Java-Anwendung (Swing), in welcher ich Textdokumente (odt), die ich als Templates mit Platzhaltern angelegt habe, durch die Anwendung mit Daten gefüllt haben möchte (Name, Adresse...) und dann ausdrucken will. Das ausgefüllte Textdokument soll nur ausgedruckt, aber nicht gespeichert werden (das wäre mir wichtig). Gibt es da irgendwo im Internet schon ein Beispiel, wie das funktioniert. Ich hatte mir auch schon die Examples hier http://api.libreoffice.org/examples/exa ... a_examples angeschaut, aber irgendwie komme ich da nicht weiter. Es fängt schon an, dass es mit dem Bootstrap nicht klappt und Fehlermeldungen gibt ("no office executable found" ). Im Internet fand ich die Lösung, dass man den ooo.connector.BootstrapSocketConnector benutzen sollte. Aber da muss man in der Java-Anwendung angeben, wo sich die Installation von LIbreOffice befindet. Ist das unbedingt notwendig? Gibt es denn keine andere Lösung?

Fragt Camino

Re: Java und UNO

Verfasst: Mo 11. Nov 2013, 07:24
von karolus
Hallo

Mit Java kenn ich mich nicht aus, aber wenn das Dokument schon da ist, kannst du ihm doch auch einen Namen geben ( ergo: Speichern )
dann musst du nur noch auf einer shell den Befehl absetzen:

Code: Alles auswählen

[optional/komletter/pfad/zu/]soffice[.exe] -p '/pfad/zum/dokument.ods' 
und das Dokument nach dem Ausdruck löschen.

wie das aus Java geht ? - k.A! :?

Karolus

Re: Java und UNO

Verfasst: Mo 11. Nov 2013, 07:31
von gogo
Camino hat geschrieben:...("no office executable found" )...
sry, meine Kristallkugel ist gerade beim Service, und die NSA hat gerade Urlaub:
Betriebssystem?
LO-Version?

Re: Java und UNO

Verfasst: Mo 11. Nov 2013, 09:53
von Camino
gogo hat geschrieben:
Camino hat geschrieben:...("no office executable found" )...
sry, meine Kristallkugel ist gerade beim Service, und die NSA hat gerade Urlaub:
Betriebssystem?
LO-Version?
Ja, sorry...
LO-Verion ist 4.1.3.2
Betriebssystem ist Windows 7

Die Java-Anwendung soll aber (nachher) unter Linux laufen (wahrscheinlich Ubuntu).
Bin gerade nur am Testen unter Windows 7, weil mein Drucker unter Debian nicht funktioniert.

Und wie gesagt, die Fehlermeldung bekam ich hiermit:

Code: Alles auswählen

com.sun.star.uno.XComponentContext xContext = null;

        try {
            // get the remote office component context
            xContext = com.sun.star.comp.helper.Bootstrap.bootstrap
Also bei dem Bootstrap.bootstrap...

Und da hatte ich dann im Internet diese Lösung mit dem BootstrapSocketConnector gefunden (hatte bootstrapconnector.jar heruntergeladen und eingebunden):

Code: Alles auswählen

XComponentContext xContext = null;
		
		String oooExeFolder = "C:/Program Files (x86)/LibreOffice 4/program/";

        try {
            // get the remote office component context
            xContext = BootstrapSocketConnector.bootstrap(oooExeFolder);
Damit funktionierte es auch so einigermassen. Es gab aber leider noch Probleme, das sich beim testen in Eclipse die Java-Anwendung nicht mehr schliessen liesse, sondern mit dem Task-Manager beendet werden musste.

Aber mir wäre schon geholfen, wenn jemand weiss, wie es geht und mir ein bisschne weiterhelfen könnte. Wie gesagt, ich möchte das Dokument (Template) einlesen, parsen und die Platzhalter mit Werten ersetzen und dann ausdrucken (ohne zwischenzuspeichern).

Re: Java und UNO

Verfasst: Mo 11. Nov 2013, 09:58
von Camino
karolus hat geschrieben:Hallo

Mit Java kenn ich mich nicht aus, aber wenn das Dokument schon da ist, kannst du ihm doch auch einen Namen geben ( ergo: Speichern )
dann musst du nur noch auf einer shell den Befehl absetzen:

Code: Alles auswählen

[optional/komletter/pfad/zu/]soffice[.exe] -p '/pfad/zum/dokument.ods' 
und das Dokument nach dem Ausdruck löschen.

wie das aus Java geht ? - k.A! :?

Karolus
Ich möchte eigentlich gerne auf das Zwischenspeichern und Datei danach dann löschen verzichten. Deshalb suche ich Hilfe und Infos, ob das schon jemand erfolgreich hingekriegt hat. Es funktioniert wohl auch mit diesem BootstrapSocketConnector, aber halt bei mir noch nicht so richtig.

Re: Java und UNO

Verfasst: Mo 11. Nov 2013, 10:17
von gogo
Kann Dir bei Deinem Java-Problem leider nicht helfen, aber wenn unter Debian ein Drucker nicht funzt versuch's mit CUPS, (Konfiguration per http://localhost:631/) - das könnte auch eine Problemlösung sein, da CUPS direkten Kommandozeilendruck (lp filename) unterstützt!

Re: Java und UNO

Verfasst: Mo 11. Nov 2013, 10:31
von Camino
gogo hat geschrieben:Kann Dir bei Deinem Java-Problem leider nicht helfen, aber wenn unter Debian ein Drucker nicht funzt versuch's mit CUPS, (Konfiguration per http://localhost:631/) - das könnte auch eine Problemlösung sein, da CUPS direkten Kommandozeilendruck (lp filename) unterstützt!
Ja danke, der Drucker erscheint ja auch schon in der Konfiguration und ist als Standarddrucker eingerichtet, druckt aber nicht. Ist ein HP LaserJet 1020, mit dem hatte ich schon immer Probleme unter Debian. Mittlerweile wird er wenigstens sofort erkannt. Das mit dem Drucken krieg ich auch noch hin, hatte schon im Internet Lösungen dazu gefunden. Muss mich da nur mal ransetzen. Aber das ist ja gerade nicht so wichtig. Das mit dem Java und dem Drucken eines odt-Dokumentes wäre mir gerade wichtiger. Schade. Vielleicht hat ja wer anderes damit Erfahrungen und kann mir Tipps geben. Danke trotzdem...

Re: Java und UNO

Verfasst: Mo 11. Nov 2013, 10:36
von karolus
gogo hat geschrieben:Kann Dir bei Deinem Java-Problem leider nicht helfen, aber wenn unter Debian ein Drucker nicht funzt versuch's mit CUPS, (Konfiguration per http://localhost:631/) - das könnte auch eine Problemlösung sein, da CUPS direkten Kommandozeilendruck (lp filename) unterstützt!
CUPS kann nicht direkt od* -dateien drucken.

Karolus

Re: Java und UNO

Verfasst: Mo 11. Nov 2013, 10:43
von Camino
Ich hatte ja auch schon mehrere andere Möglichkeiten versucht, aber entweder ging es da auch nur über ein Zwischenspeichern, oder es war erst mal nur für ods-Dateien entwickelt.

Zum Beispiel: http://incubator.apache.org/odftoolkit/
Da hab ich bisher auch nur eine Möglichkeit zum Speichern des odt-Dokumentes entdeckt, aber kein Drucken.

Ich glaube, das da http://www.jopendocument.org/ war die Library, welche hauptsächlich mit ods-Dateien funktionierte.

Ich hatte auch mal die Version getestet, die odt-Datei zu entpacken, den content.xml zu parsen und die Platzhalter zu ersetzen. Dann musste ich aber auch erst zwischenspeichern, um das neuerstellte Dokument zu drucken.

Versuche ohne LibreOffice, mit JasperReports, waren nicht besonders erfolgreich, da dies für Briefe u.ä. nicht besonders gut geeignet ist, eher für Berichte.