Lightweight ODF Library

Lightweight ODF Library (LODF) ist eine einfache, extrem kleine API zum bearbeiten von OpenDocument Dateien.

Öffnen und schliessen

Dokumente werden durch Aufruf von open geöffnet. Ein überschreiben beim Speichern ist möglich. Nach dem Ende der Bearbeitung sollte doc.close() aufgerufen werden um die verwendeten Resourcen freizugeben.
        Document doc = Document.open(new File("/tmp/template.odt"));
        doc.save(new File("/tmp/template.odt"));
        doc.close();

Templates

Entwickelt wurde LODF um Templates füllen zu können. Dies kann sowohl auf Dokumentenebene als auch auf Ebene einzelner Paragraphen durch aufruf von replaceText(pattern, replacement) getan werden. Die Art der Platzhalter spielt keine Rolle. Es können einfacher Text oder z.B. ${NAME}, %%NAME%% oder ähnliches verwendet werden.
        Document doc = Document.open(new File("/tmp/template.odt"));
	//Replace in the entire Document
        doc.replaceText("MYPATTERN", "HELLOWORLD");  
	//Replace in one Paragraph
	Paragraph pa = doc.getParagraphs().get(5);
	pa.replaceText("MYPATTERN2", "HELLO");
        doc.save(new File("/tmp/out.odt"));
        doc.close();

Seitenumbruch einfügen

Um einen Seitenumbruch einzufügen ruft man pageBreakAfter(Paragraph ref) auf. Wird dabei kein Paragraph angegeben, dann wird der Seitenumbruch am Ende des Dokumentes eingefügt.
        doc.pageBreakAfter(null);

Paragraph löschen

Um einen Paragraphen zu löschen wird deleteParagraph(Paragraph p) aufgerufen.

Paragraph einfügen

Um einen neuen Paragraphen einzufügen muss dieser zunächst erzeugt werden. Dazu dient createParagraph() aufgerufen. Anschliessend kann der neue Paragraph mittels addParagraphAfter(Paragraph ref) in das Dokument eingefügt werden.

Serienbrief

Das erstellen einfacher Briefe an mehrere Personen ist mit den meisten Textverarbeitungen Problemlos möglich. Leider ist es aber sehr stark von der verwendeten Textverarbeitung abhängig, wie genau man den Serienbrief und die Datendatei zusammenbringt.
LODF verzichtet bewusst auf eine echte Serienbrief funktionalität. Dafür funktioniert es aber mit allen unterstützten Textverarbeitungen gleich. Das Template wird einfach so oft geöffnet wie nötig. Nötige Änderungen werden durchgeführt und dann wird ein Dokument an das andere gehängt.
        Document doc = open(new File("/tmp/serienbrief.odt"));
        Document doc2 = open(new File("/tmp/serienbrief.odt"));
        doc.replaceText("NAME", "Joe Smith");
        doc.pageBreakAfter(null);
        doc.concat(doc2);
        doc2.close();
        doc.save(new File("/tmp/x.odt"));
        doc.close();