Einfügen ganzer Dokumente
Der Inhalt von Abschnitten lässt sich mit UNO relativ leicht in ein bestehendes Dokument einfügen. Manchmal ist es aber erforderlich, gleich ein ganzes Dokument in ein bestehendes Dokument zu laden. Dazu legt man einen »PropertyValue« an, beschafft sich per »getTextDocument()« wieder das »TextDocument« aus dem Writer, holt sich daraus den Text (Objekt »XText«) und instanziiert einen Text-Cursor. Über das »XDocumentInsertable«-Objekt wird danach das Dokument aus der übergebenen URL eingefügt (Listing 6).
Die Vorgehensweise ist etwas schwieriger als bei den anderen Beispielen. Naturgemäß bringt eine ausgereifte Textverarbeitung wie Open Writer etwas Komplexität mit sich, doch gewinnt man bei diesem Vorgehen auch zusätzlichen Gestaltungsspielraum: Der Text-Cursor lässt sich zum Beispiel genau positionieren und nicht nur ans Ende oder an den Anfang eines Dokuments setzen.
Die gezeigten fünf Beispiele Speichern, Laden, Einfügen, Drucken und Ersetzen von Text genügen im Grunde schon, um eine simple Applikation zu schreiben.
Abbildung 2: Die erstellte Demo-Anwendung: »Word« wird beim Klick auf den entsprechenden Button selbstverständlich durch »Writer« ersetzt.
Faktura mit OO
Als Beispiel dient eine kleine Faktura-Anwendung mit dem Namen Gnu Accounting[5]. Sie bettet Open Office ein, um die Vorlagen für Rechnungen und Gutschriften zu gestalten. Artikel und Kunden speichert sie in MySQL, zeigt Rechnungen oder Gutschriften im eingebettetem Open Office an und druckt sie auf Wunsch gleich aus.
In den Vorlagen lassen sich Kopf, Fuß und die Rechnungspositionen mit allen Möglichkeiten von Open Office gestalten: Listen, Tabellen, Schriften, Grafiken und so weiter. Auch der Einsatz echter Datenfelder, wie sie aus Serienbriefen bekannt sind, ist nicht schwierig, nur müsste man eine Auswahl solcher Felder präsentieren.
Das ließe sich zum Beispiel innerhalb des Kontextmenüs von Open Office realisieren, das innerhalb des Office-Bean modifiziert werden kann, siehe[6]. Der Einfachheit halber beschränkt sich das Beispiel aber auf Schlüsselwörter, zum Beispiel »<item:name/>« für den Artikeltext.
Die Anwendung lädt also den Kopf, ersetzt die Schlüsselwörter beispielsweise für die Kundenadresse, öffnet die Vorlage für jeweils eine Rechnungsposition und ersetzt die Schlüsselwörter für die Positionsdaten. Dann berechnet sie die Gesamtsumme, fügt den Footer an und passt darin die entsprechenden Schlüsselwörter für Gesamtsumme und Zahlungsbedingungen an.
Schließlich speichert sie das Ganze als SXW-Datei und druckt es auf Wunsch automatisch aus. Die gestellten Rechnungen landen mit dem Zahlungsziel in einer Tabelle, um später nach ordnungsgemäßem Erhalt der Zahlung aktualisiert zu werden. Eine spezielle Ansicht listet alle fälligen Zahlungen.
Weil Kunden in manchen Fällen nicht nur Geld bezahlen, sondern eventuell auch (zurück)bekommen, verwendet die Anwendung unterschiedliche Vorlagen, um beispielsweise auch Gutschriften auszustellen.
Diesen Artikel als PDF kaufen
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





