Kaffeefahrt

Teil 7: OpenOffice.org mit Java automatisieren

Dank der Hilfe des Assistenten sind schon alle Verzeichnisse angelegt, und alle benötigten Libraries sind dem Projekt ebenfalls bekannt. Nun programmieren Sie die Anwendung, um eine PDF-Datei zu erzeugen und zu speichern. Öffnen Sie dazu im Projektfenster unter Source Packages im Ordner mit Ihrem Projektnamen die Java-Datei. Das Java-Programm soll einige Zeilen Text in ein Dokument schreiben und dieses Dokument dann als PDF-Datei speichern. Damit das Hauptprogramm nicht überfrachtet wird und der Quelltext übersichtlich bleibt, teilen Sie das Programm in Methoden auf.

OpenOffice.org mit Java automatisieren

© Archiv

Der Projekt-Assistent nimmt uns etwas Arbeit ab. Er erzeugt eine lauffähige Client-Applikation.

Die erste Methode, die aufgerufen wird, ist getOfficeConnection. Sie versucht, eine Verbindung mit einer laufenden Open- Office.org-Instanz herzustellen. Falls keine Instanz gefunden wird, startet OpenOffice. org. Dabei liefert die Methode bootstrap den ComponentContext von OpenOffice.org zurück. Dieser wird benötigt, um über den Service- Manager und das Desktop-Objekt ein Proxy-Objekt mit Hilfe der Funktion queryInterface zu erzeugen. Denn nur über das Proxy-Objekt können Sie auf die Methoden der Schnittstelle zugreifen. Diese Vorgehensweise wird uns noch häufiger begegnen. Das folgende Listing stellt eine Verbindung mit OpenOffice.org her.

private static void 
getOfficeConnection() throws 
java.lang.Exception { 
// Verbindung zum OpenOffice 
herstellen, ggf OOo starten 
xLocalContext = Bootstrap.bootstrap(); 
XMultiComponentFactory 
xLocalServiceManager = 
xLocalContext.getServiceManager(); 
Object desktop = 
xLocalServiceManager.createInstanceWith 
Context("com.sun.star.frame.Desktop", 
xLocalContext); 
xComponentLoader = 
(XComponentLoader)UnoRuntime.queryInter 
face(XComponentLoader.class, desktop); 
}

Danach wird die Methode openNewTextDocument aufgerufen. Die Eigenschaften (Properties) werden so gesetzt, dass die Textverarbeitung Writer nicht auf dem Bildschirm sichtbar ist. Dies wird durch die Eigenschaft Hidden mit dem Value auf true festgelegt. Der Anwender bekommt das eigentliche Dokument auf dem Bildschirm also nicht zu Gesicht. Falls dies doch gewünscht wird, ersetzen Sie Hidden einfach durch Visible. Dann erscheint ein zunächst leeres Dokument im Writer. Das folgende Listing legt ein neues, aber verstecktes Text-Dokument im Writer an.

OpenOffice.org mit Java automatisieren

© Archiv

Nach erfolgreichem Build-Prozess haben Sie eine JAR-Datei erzeugt und können diese auf der Kommandozeile ausführen.
private static void 
openNewTextDocument() throws 
java.lang.Exception { 
// Eigenschaften des Textdokuments 
festlegen 
PropertyValue[] pPropValues = new 
PropertyValue[2]; 
pPropValues[0] = new PropertyValue(); 
pPropValues[0].Name = "Hidden"; 
pPropValues[0].Value = new 
Boolean(true); 
xComponent = 
xComponentLoader.loadComponentFromURL(" 
private:factory/swriter", "_blank", 0, 
pPropValues); 
}

Das Dokument wird nun über die Methode createTextDocument mit einigen Zeilen Text gefüllt. Es wird zunächst über die Methode queryInterface wieder eine Verbindung zum Textdokument hergestellt, dass dann über getText geholt und über die folgenden Befehle gefüllt wird. Das folgende Listing füllt das Dokument mit Text.

private static void 
createTextDocument() throws 
java.lang.Exception { 
// Dokuemnt mit Text füllen 
XTextDocument xTextDocument = 
(XTextDocument)UnoRuntime.queryInterfac 
e(XTextDocument.class, xComponent); 
XText xText = xTextDocument.getText(); 
// Erste Zeile 
XTextCursor xTextCursor = 
xText.createTextCursor(); 
xText.insertString(xTextCursor, "Praxis 
* Technik * Test", false); 
xTextCursor.gotoEnd(false); 
xText.insertControlCharacter(xTextCurso 
r, ControlCharacter.PARAGRAPH_BREAK, 
false); 
xText.insertControlCharacter(xTextCurso 
r, ControlCharacter.PARAGRAPH_BREAK, 
false); 
// Zweite Zeile 
xText.insertString(xTextCursor, "PC 
Magazin", false); 
xTextCursor.gotoEnd(true); 
xText.insertControlCharacter(xTextCurso 
r, ControlCharacter.PARAGRAPH_BREAK, 
false); 
xText.insertControlCharacter(xTextCurso 
r, ControlCharacter.PARAGRAPH_BREAK, 
false); 
// Dritte Zeile 
xText.insertString(xTextCursor,"http:// 
www.pc-magazin.de", false); 
}

Als Nächstes muss unser Dokument noch als PDF-Datei gespeichert werden. Dies übernimmt die Methode storeDocument. Zunächst werden wieder einige Eigenschaften festgelegt, zuerst der Name des Exportfilters und danach die Kompremierungsmethode. Als Exportfilter wird writer_pdf_Export angegeben. Denn es handelt sich um ein Textdokument aus dem Writer, das als PDFDatei gespeichertwerden soll.

In den folgenden beiden Zeilen besorgen wir uns das Speicherobjekt und führen dann die entsprechende Exportmethode storeToUrl aus. Damit erhalten wir dann, wie erwartet, unter dem angegebenen Verzeichnis- und Dateinamen eine PDF-Datei mit unserem Text. Die Methode closeTextDocument zerstört dann noch die Verbindung zu OpenOffice.org.

Mehr zum Thema

HTML 5
Webgestaltung

Google Web Designer ist spezialisiert auf HTML5. Ein Vorteil dieses Standards ist das einfache Einbinden von Videos mit dem Element video. Wir zeigen…
Wir verraten, wie Sie Fritzboxen und andere Router vor Hackern schützen.
Fritzbox, Asus, Belkin und Co.

Fritzbox, Asus, Belkin oder DLink - die Liste der geknackten Router ist lang. Hacker stahlen Passwörter oder NAS-Daten. So machen Sie Ihren Router…
Wir führen Sie zur eigenen Windows-App - unserem PC-Magazin-RSS-Feed.
C# und XAML

Wir zeigen, wie Sie Windows 8.1 Apps selbst programmieren können. Lernen Sie das App erstellen an Hand unseres Beispiels: dem RSS-Feed von PC…
Windows Tipps & Tricks: Benutzerrechte unter Windows 8.1
Programme richtig installieren

Wir zeigen Ihnen, wie Sie sich unter Windows 8.1 alle Benutzerrechte verschaffen und Programme richtig installieren.
Windows 8: Starbildschirm
Microsoft Project Siena

Erstellen Sie sich selbst eine App für Windows 8, die auf alle Funktionen Ihres Tablets zugreifen kann, inklusive Kamera, Mikrofon und Lautsprecher.…