Dokumentenverarbeitung mit dem docx4j-Framework

What’s up, Doc?

Lars Drießnack


Im Gegensatz zu automatisierten Textverarbeitungsprozessen außerhalb einer Geschäftsanwendung können mit der Verwendung von docx4j als Bibliothek der Applikation alle Datenquellen genutzt werden, die die etwaige Geschäftsanwendung selbst ebenfalls nutzt, da die Verarbeitung an Ort und Stelle durchgeführt wird (potenzielle Verwendung, Abb. 1). Es entfallen somit aufwändige Import/Export-Prozesse sowie Schnittstellen zur Datenbereitstellung nach außen. Die Modellierung und Formatierung des gewünschten Ausgabedokuments obliegt grundsätzlich dem Entwickler, kann aber durch die Verwendung von Vorlagen vereinfacht und gesteuert werden. Die aktuelle Version 2.7.1 wurde im Oktober 2011 veröffentlicht. Sie unterstützt die Versionen MS Word 2007 und 2010, da ab Word 2007 Dokumente im XML-basierten Containerformat docx gespeichert werden können. Jason Harrop, CEO von Plutext und Chefentwickler, betreibt die Internetseite www.docx4java.org, die Foren, Beispielprojekte und Blogs rund um das Framework enthält.

Abb. 1: Potenzielle Verwendung von docx4j

Wichtige Klassen

Im docx4j-Framework sind grundsätzlich alle Elemente der WordML als Klassen repräsentiert. Es empfiehlt sich, bei Verwendung spezieller Klassen zunächst ein Beispieldokument zu erstellen und sich den XML-Code des Elements und die notwendigen Bestandteile anzusehen. Im Folgenden werden einige wesentliche Klassen und deren Verwendung erläutert.

WordprocessingMLPackage ist die docx4j-Repräsentation des docx-Dokuments (im Folgenden nur als wmlPackage bezeichnet). Sie kann entweder durch Laden eines bestehenden Dokuments oder durch Erzeugung einer neuen Repräsentation eines noch zu definierenden Dokuments erstellt werden. Laden und Erzeugen einer Instanz dieser Klasse erfolgt über die statischen Methoden load(File docxFile) und createPackage(). Die Methode createPackage() übernimmt dabei die Teilschritte:

Erzeugung des wmlPackage-ObjektsErzeugung eines MainDocumentPart-ObjektsErzeugung eines Body-Objekts mithilfe der ObjectFactoryErzeugung eines Document-Objekts mithilfe der ObjectFactoryZusammenstellung der Objekte zum wmlPackageDie Speicherung eines wmlPackages erfolgt über die Methode save(File docxFile) der jeweiligen Instanz.

Sdt-Klassen sind in MS Word besser bekannt als „Inhaltssteuerelemente“ und können zur Ausgabe und Formatierung im Dokument verwendet werden. Je nach Kontext, in dem ein Inhaltssteuerelement verwendet wird, kann es verschiedene Ausprägungen (Java-Klassen) annehmen. Die geläufigsten sind:

...

Dokumentenverarbeitung mit dem docx4j-Framework

What’s up, Doc?

Lars Drießnack


Im Gegensatz zu automatisierten Textverarbeitungsprozessen außerhalb einer Geschäftsanwendung können mit der Verwendung von docx4j als Bibliothek der Applikation alle Datenquellen genutzt werden, die die etwaige Geschäftsanwendung selbst ebenfalls nutzt, da die Verarbeitung an Ort und Stelle durchgeführt wird (potenzielle Verwendung, Abb. 1). Es entfallen somit aufwändige Import/Export-Prozesse sowie Schnittstellen zur Datenbereitstellung nach außen. Die Modellierung und Formatierung des gewünschten Ausgabedokuments obliegt grundsätzlich dem Entwickler, kann aber durch die Verwendung von Vorlagen vereinfacht und gesteuert werden. Die aktuelle Version 2.7.1 wurde im Oktober 2011 veröffentlicht. Sie unterstützt die Versionen MS Word 2007 und 2010, da ab Word 2007 Dokumente im XML-basierten Containerformat docx gespeichert werden können. Jason Harrop, CEO von Plutext und Chefentwickler, betreibt die Internetseite www.docx4java.org, die Foren, Beispielprojekte und Blogs rund um das Framework enthält.

Abb. 1: Potenzielle Verwendung von docx4j

Wichtige Klassen

Im docx4j-Framework sind grundsätzlich alle Elemente der WordML als Klassen repräsentiert. Es empfiehlt sich, bei Verwendung spezieller Klassen zunächst ein Beispieldokument zu erstellen und sich den XML-Code des Elements und die notwendigen Bestandteile anzusehen. Im Folgenden werden einige wesentliche Klassen und deren Verwendung erläutert.

WordprocessingMLPackage ist die docx4j-Repräsentation des docx-Dokuments (im Folgenden nur als wmlPackage bezeichnet). Sie kann entweder durch Laden eines bestehenden Dokuments oder durch Erzeugung einer neuen Repräsentation eines noch zu definierenden Dokuments erstellt werden. Laden und Erzeugen einer Instanz dieser Klasse erfolgt über die statischen Methoden load(File docxFile) und createPackage(). Die Methode createPackage() übernimmt dabei die Teilschritte:

Erzeugung des wmlPackage-ObjektsErzeugung eines MainDocumentPart-ObjektsErzeugung eines Body-Objekts mithilfe der ObjectFactoryErzeugung eines Document-Objekts mithilfe der ObjectFactoryZusammenstellung der Objekte zum wmlPackageDie Speicherung eines wmlPackages erfolgt über die Methode save(File docxFile) der jeweiligen Instanz.

Sdt-Klassen sind in MS Word besser bekannt als „Inhaltssteuerelemente“ und können zur Ausgabe und Formatierung im Dokument verwendet werden. Je nach Kontext, in dem ein Inhaltssteuerelement verwendet wird, kann es verschiedene Ausprägungen (Java-Klassen) annehmen. Die geläufigsten sind:

...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang