libreoffice mit java-applikation starten

Hallo,

ich schreibe hin und wieder kleine Java-Programme die OO benutzen, um odt-Dateien zu erzeugen.
Bisher habe ich immer "Nice Office Access" dazu benutzt.
Leider scheint es viele Schwierigkeiten zwischen "Nice Office Access" und LibreOffice zu geben.
Die Zukunft von "Nice Office Access" ist momentan auch ungewiss.

Deswegen meine Frage:
Gibt es Programmierbeispiele, wie man LibreOffice direkt mit Java-Applikationen (also keine Makros!!) "fernsteuern" kann?

Für mich ist es absolut wichtig mathematische Formel-Objekte in den Texten verankern zu können.
Wenn es dazu auch Codebeispiele gäbe, wäre das wunderbar.

Bisher mache ich das so:
XTextContent embeddedObject = (XTextContent) UnoRuntime.queryInterface(XTextContent.class,
xMultiServiceFactory.createInstance("com.sun.star.text.TextEmbeddedObject"));
XPropertySet props = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, embeddedObject);
//this CLSID stands for a formula object and makes the embeddedObject to a formula
//I did not find informations in the OO-API :frowning:
props.setPropertyValue("CLSID", "078B7ABA-54FC-457F-8551-6147e776a997");
props.setPropertyValue("AnchorType", TextContentAnchorType.AS_CHARACTER);

Vielen Dank!
Beste Grüße
Jochen

Hallo Jochen,

Hallo,

ich schreibe hin und wieder kleine Java-Programme die OO benutzen, um
odt-Dateien zu erzeugen.
Bisher habe ich immer "Nice Office Access" dazu benutzt.
Leider scheint es viele Schwierigkeiten zwischen "Nice Office Access"
und LibreOffice zu geben.
Die Zukunft von "Nice Office Access" ist momentan auch ungewiss.

Deswegen meine Frage:
Gibt es Programmierbeispiele, wie man LibreOffice direkt mit
Java-Applikationen (also keine Makros!!) "fernsteuern" kann?

Dazu das SDK installieren und den Developers Guide lesen, für eingebettete Objekte z.B.
http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Text/Embedded_Objects

Gruß Peter

Hallo Liste, Hallo Peter,

erst noch mal vielen Dank für die Antwort.
Das war der Link, den ich schon lange gesucht und nicht gefunden habe.

Ich habe folgendes kleines Beispielprogramm erfolgreich laufen lassen können :slight_smile:
http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/FirstSteps/First_Contact

Allerdings nur wenn ich einen uneleganten Trick mache.

Das Programm startet nur, wenn die LibreOffice-Startdatei
     (/opt/libreoffice3.4/program/soffice)
im selben Verzeichnis wie die "LibreOffice-Java-Bibliotheken" liegt.
     (/opt/libreoffice3.4/ure/share/java/java_uno.jar, .../juh.jar etc...)

Ansonsten gibt es diese Fehlermeldung:
     com.sun.star.comp.helper.BootstrapException: no office executable found!
     at com.sun.star.comp.helper.Bootstrap.bootstrap(Bootstrap.java:243)

Bei mir liegen die Dateien aber nicht im selben Verzeichnis.
Erst wenn ich einen symbolischen Link anlege, kann das Programm laufen.

     sudo ln -s /opt/libreoffice3.4/program/soffice /opt/libreoffice3.4/ure/share/java/

Bei mir ist das ja noch OK. Ich will aber den Nutzern meines Programmes nicht zumuten, symbolische Links anlegen zu müssen. Viele Leute kennen keine symbolischen Links und würden dadurch abgeschreckt.
Es wird einen Dialog geben, in dem die notwendigen Pfade einzutragen sind. Das ist schon genug beängstigender "Computer-Freak-Kram".

Auf folgender Internetseite ist ein Hack, bei dem man die Klasse Bootstrap (Bootstrap.java) in den LibreOffice-Quellen direkt verändert.
http://technology.amis.nl/blog/1284/getting-started-with-the-openofficeorg-api-part-ii-starting-openofficeorg-with-jars-not-in-the-ooo-install-dir

Das erscheint mir aber unschön.

Hat jemand einen Tipp, wie ich dieses Problem lösen kann?

Vielen Dank für jeden Tipp!

Beste Grüße
Jochen