🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Java und UNO

Alles zur Programmierung im LibreOffice.
Antworten
Camino
Beiträge: 5
Registriert: Di 5. Nov 2013, 11:53

Java und UNO

Beitrag von Camino » Mo 11. Nov 2013, 00:36

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

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2540
Registriert: Fr 10. Dez 2010, 10:01

Re: Java und UNO

Beitrag von karolus » Mo 11. Nov 2013, 07:24

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
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Java und UNO

Beitrag von gogo » Mo 11. Nov 2013, 07:31

Camino hat geschrieben:...("no office executable found" )...
sry, meine Kristallkugel ist gerade beim Service, und die NSA hat gerade Urlaub:
Betriebssystem?
LO-Version?
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Camino
Beiträge: 5
Registriert: Di 5. Nov 2013, 11:53

Re: Java und UNO

Beitrag von Camino » Mo 11. Nov 2013, 09:53

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).

Camino
Beiträge: 5
Registriert: Di 5. Nov 2013, 11:53

Re: Java und UNO

Beitrag von Camino » Mo 11. Nov 2013, 09:58

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.

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Java und UNO

Beitrag von gogo » Mo 11. Nov 2013, 10:17

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!
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Camino
Beiträge: 5
Registriert: Di 5. Nov 2013, 11:53

Re: Java und UNO

Beitrag von Camino » Mo 11. Nov 2013, 10:31

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...

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2540
Registriert: Fr 10. Dez 2010, 10:01

Re: Java und UNO

Beitrag von karolus » Mo 11. Nov 2013, 10:36

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
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Camino
Beiträge: 5
Registriert: Di 5. Nov 2013, 11:53

Re: Java und UNO

Beitrag von Camino » Mo 11. Nov 2013, 10:43

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.


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten