RTF Merger
(Standard-Version)
Inhaltsverzeichnis
5.10 Mehrere RTF-Vorlagedateien zusammenführen
5.13 Bekannter Bug von Word 97/2000
1 Allgemeines
Seit Existenz der Programmiersprache Java®, gibt es keine triviale Lösung um Ihre Daten auf Papier zu bringen. Gerade wenn es sich um Formulare handelt, bei denen ein Grundgerüst immer gleich bleibt. Diese Formulare werden in der Regel einmal in die Anwendung programmiert und sind ab dann fester Bestandteil. Änderungen kann nur ein Programmierer durchführen!
Auch Techniken wie XSL, XSLT oder ähnliche können z. Zt. nur rein programmtechnisch abgebildet werden. Möchte ein Endanwender ohne Programmierkenntnisse eine Dokumentvorlage ändern, wird er scheitern. Es existieren bis dato keine Editoren, die das einfache Erstellen von XSL-Vorlagen erlauben.
Ist das für Sie eine zufriedenstellende Lösung? Mit Sicherheit nicht!
Nutzen Sie doch zur Gestaltung Ihrer Formulare einfach Ihre bestehende Textverarbeitung. Speichern Sie die Datei im RTF-Format ab, starten Sie unseren RTF Merger und Sie bekommen ein fertig ausgefülltes Dokument als RTF-Datei. Diese wiederum können Sie in Ihrer Textverarbeitung nachbearbeiten und/oder ausdrucken, in PDF konvertieren und per e-Mail versenden.
2 Systemvoraussetzungen
Für die Nutzung als eigenständiges Programm:
· JDK oder JRE ab Version 1.2.2
· die Dateien rtfmerger.jar, xerces.jar, jdom.jar befinden sich im CLASSPATH
Für die Integration in Ihr bestehendes Java-Programm gibt es keine abweichenden Systemvoraussetzungen
3 Einführung
Alle Ausdrucke basieren grundsätzlich auf zwei Dateien
· einer Vorlagendatei im RTF-Format und
· einer Datendatei im XML-Format.
Die RTF-Datei kann in Word97/2000 erstellt, bearbeitet und abgespeichert werden. Sollten Sie andere Textverarbeitungsprogramme nutzen, können wir nicht garantieren, dass der RTF Merger korrekt läuft. Sie enthält bestimmte Variablen, „Tags“ genannt, an deren Stelle im endgültigen Ausdruck, Werte aus dem Programm stehen sollen. , die in der XML-Datei zur Verfügung gestellt werden,.
Die XML-Datei wird von Ihrer Anwendung generiert. Sollten Sie in der vorhandenen Anwendungen noch nicht die Möglichkeit haben, Ihre Daten im XML-Format rauszuschreiben, so müssen Sie dies vor Verwendung des GhsRtfMerger realisieren. In der XML-Datei enthalten sind die Daten, die mit dem jeweiligen Ausdruck fachlich in Verbindung stehen. Teilweise kann es aus drucktechnischen Gründen nötig sein, Daten redundant im XML-File abzuspeichern.
Sind beide Dateien vorhanden, können Sie den GhsRtfMerger aufrufen, der die Mischung durchführt. Die u.g. Tags werden durch Werte aus dem XML-File ersetzt und es wird eine neue RTF-Datei generiert. Die ursprüngliche Vorlage bleibt unverändert. Wenn Sie die XML-Datei anschließend nicht mehr benötigen, sollten Sie deren Löschung in Ihrem Programm veranlassen. Der GhsRtfMerger löscht nichts!
Zusätzlich wird auf Wunsch ein (Fehler-)Protokollierung durchgeführt:
Durch Parameter beim Programmaufruf lässt sich steuern, welche Meldungen ausgegeben werden. Sie können direkt am Bildschirm ausgegeben oder in einer log - Datei geschrieben werden
4 Starten des RTF Mergers
4.1 Im Java-Programm
siehe JavaDoc:
Online
www.rtfmerger.de/api/index.html
4.2 In der Kommandozeile:
Aufruf über
„java cp rtfmerger.jar;xerces.jar;jdom.jar de.ghs.xml2rtf.GhsRtfMerger“ mit den Optionen:
Pflicht-Parameter
/rtf
Name der RTF Vorlage (mit Pfadangabe, falls nicht gleiches Verzeichnis wie JAR-Files)
/xml
Name der XML Datei (mit Pfadangabe, falls nicht gleiches Verzeichnis wie JAR-Files)
/d
Name der Ausgabedatei (mit Pfadangabe, falls nicht gleiches Verzeichnis wie JAR-Files)
Optionale Parameter
/prop
Name der Property-Datei, falls verwendet. Werden properties verwendet und es ist kein Dateiname angegeben, so wird davon ausgegangen, dass die Property Datei im gleichen Verzeichnis liegt wie die RTF Vorlage und der Dateiname in der Endung nach „.properties“ abgewandelt ist.
/lm: Logging Modus
Welche Protokollnachrichten sollen ausgegeben werden. Je nach Stufe (MODE_LIGHT, MODE_NORMAL, MODE_DEBUG) werden unterschiedlich viele Nachrichten generiert und ausgegeben.
Grundsätzlich ist es nicht nötig, das Logging einzuschalten.. Treten jedoch unerwartet Effekte beim Generieren auf, so kann man evtl. nachvollziehen, ob Fehler im RTF Dokument oder in der XML-Vorlage gemacht wurden.
/ld:Logging Ausgabe
Wohin sollen die Nachrichten gesendet werden
NULL = es werden keine Nachrichten ausgegeben
CONSOLE_LOG = die Nachrichten werden in der Konsole angezeigt
FILE_LOG = die Nachrichten werden in ein Logfile geschrieben.
/lf:Logfile
Wird beim Schalter „/ld“ der Modus FILE_LOG ausgewählt kann hier ein Logfile angegeben werden. Standardmäßig wird das Logfile ins Userverzeichnis, Unterverzeichnis TEMP gespeichert und hat den Namen „rtfmerger.log“.
5 Erlaubte Tags
5.1 Variablen im allgemeinen
Jede Variable beginnt mit „$_“ und endet mit „&“. Der Name der Variable spiegelt die Hierarchie im XML-Baum wider. Beginnend bei der Wurzel werden die Elemente durch Punkte getrennt, bis man beim gewünschten Element angelangt ist.
Bsp.: $_Buch.ISBN&, $_Version&, $_Buch.Autor.Vorname&
5.2 Aliase
Aus designtechnischen Gründen kann es notwendig sein, sehr lange Tags abkürzen zu wollen. Deshalb können in jeder Vorlage sog. Aliase verwendet werden. Sie beginnen mit „$_A_“ und enden mit „&“. Die Zuordnung von Alias zu seinem richtigen Bezeichner bzw. Variablennamen geschieht in Property-Files. Sie tragen den gleichen Namen wie die zugehörige Vorlage, mit der Endung „properties“ anstatt „rtf“ und müssen im gleichen Verzeichnis liegen. In den Property-Files sehen die Zuordnung wie folgt aus:
Name=Variable;
Der „Name“ kann beliebige Zeichen enthalten, außer „;“ (Strichpunkt), „=“ (Gleichheitszeichen) und „\“ (Backslash). Sinnvoll ist eine Durchnummerierung der Aliase von 1 bis x. Die Variable entspricht dem Namen der Elements aus dem XML-File und muss mit einem Strichpunkt abschließen.
Bsp.: 1=Buch.ISBN; <=> $_A_1&;
Grundsätzlich können Aliase auch bei den folgenden Tags verwendet werden. Sollte dies einmal nicht funktionieren, wird beim entsprechenden Tag darauf hingewiesen
5.3 Grafiken
Grafiken, die dynamisch in das Dokument eingebunden werden sollen, beginnen mit „$_G_“ und enden mit „&“.
Bsp.: $_G_Buch.Cover&
Mit Alias: $_G_A_1&;
Es werden alle Grafikformate unterstützt, die auch Ihr Textverarbeitungssystem verarbeiten kann. Dazu zählen u.a. GIF, JPG ,TIF, BMP, PNG,....
5.4 Tabellen
Bei Tabellen muss man zwischen Tabellen mit und ohne Spaltenüberschrift unterscheiden. Die Tags innerhalb der Tabellen werden relativ zum Tabellen-Tag gesehen. Aliase funktionieren hier nicht.
Mit Spaltenüberschrift:
$_T_Buch&
Titel Autor ISBN
$_Titel& $_Autor.Name& $_ISBN&
Ohne Spaltenüberschrift:
$_T_L_Buch
$_Titel& $_Autor.Name& $_ISBN&
5.5 Schleifen
Schleifen kann man grundsätzlich über alle Bereiche eines RTF-Files laufen lassen. Sie beginnen mit $_L_Name& und enden mit $_E_Name&. Die Variablen die sich innerhalb der Schleife befinden, werden mit einem relativen Bezug zu $_L_Name& gesehen. Bei Aliasen darauf achten, dass sowohl Anfangs- als auch Ende-Tags ersetzt werden.
$_L_Name& bzw. mit Alias $_L_A_1&
Text über den die Schleife laufen soll.
Das kann auch eine Tabelle sein. Ist also beliebig!
$_E_Name& bzw. mit Alias $_E_A_1&
5.6 Direkte Adressierung
Möchte man innerhalb von Schleifen auf einen bestimmten Wert außerhalb Verweisen, so benutzt man den $_D_Name& -Tag.
5.7 Aufsteigende Adressierung
Bewegt man sich innerhalb von Schleifen, kann es nötig sein, eine bestimmte Anzahl von Stufen nach oben zu klettern und von diesen neuen Punkt als Bezugspunkt wieder nach unten zu gehen. Für diesen Zweck existiert der $_UP_x_Name& Tag. „x“ bezeichnet die Anzahl der nach oben zu steigenden Stufen.
5.8 if/else - Konstrukte
Mit den Tags „$_BB_x_Name=y&“ und „$_EB_x& kann man „Wenn Dann Sonst“ Abfragen integrieren. „x“ ist ein eindeutiger Bezeichner der innerhalb eines BB-Blocks nur einmalig vorkommen darf. Zwischen Anfangs- und Endtag kann optional ein „AB“-Tag stehen der als „else“-Zweig benutzt werden kann.
Bsp.:
$_BB_1_Buch.Sonderpreis=J& (mit Alias $_BB_1_A_100=J&)
Diese Buch hat einen Sonderpreis!!
$_AB_1 &
Normaler Preis
$_EB_1&.
Gibt im Falle dass der Wert von Buch.Sonderpreis „J“ ist, ein „Diese Buch hat einen Sonderpreis!!“ aus, ansonsten „Normaler Preis“.
Hinweis: Es können keine „ist größer als“- oder „ist kleiner als“-Vergleiche durchgeführt werden.
5.9 Zeilenwechsel entfernen
Durch den Tag $_R& kann ein diesem Tag folgendes Return entfernt werden. Dies ist hilfreich, um bei Aufrufen, die mir einem Endetag versehen sind den Zeilenwechsel, das diesem Tag folgt, zu entfernen, so dass es nicht zu Leerzeilen kommt.
5.10 Mehrere RTF-Vorlagedateien zusammenführen
Es kann Anwendungsfälle geben, in denen es nötig ist, mehrere RTF Files zu einem zusammenzufügen. Hierfür existiert der $_AT Tag.
Syntax:
$_AT_rtfdateiname;xmldateiname$. An dieser Stelle wird das Dokument „rtfdateiname“ eingefügt, welches vorher mit der XML-Datei „xmldatei“ generiert wurde.
5.11 Blockweise Daten aus XML
Anwendungsfall: Sie müssen mehrere RTF-Dateien zusammenführen, die Dateinamen sind aber variabel. Generiert man ein XML-File mit mehreren „RTFAUFRUF“-Tags, die als Wert die Dateinamen enthalten, so kann man mittels des „Block“-Tags alle RTF-Dokumente einfügen. (siehe 6.10)
Syntax:
$_Block_name&
Hier werden alle Werte aus dem XML-File die in dem Tag „name.RTFAUFRUF“ stehen eingefügt.
5.12 Seitenwechsel einfügen
Der TAG „$_NP&“ führt dazu, dass der RTF Merger einen Seitenwechsel einfügt. Wir dieser Tag innerhalb einer Schleife verwendet, so wird der letzten Seitenwechsel nicht mehr eingeüfgt, da ja ansonsten eine „Leerseite“ entstehen würde.
5.13 Bekannter Bug von Word 97/2000
Dokumente die nicht eingebettete Grafiken enthalten können nicht nachträglich mit Word bearbeitet werden und im RTF-Format abgespeichert werden. Wenn man sie bearbeiten UND speichern will, so muss das Speichern im Word-Format erfolgen. Dies ist ein bekannter Fehler von Word 97 und Word 2000.
6 Support
Bei Fragen und Problemen wenden sie sich an
Michael Heckmann
GHS Gruber & Hufnagel Softwareentwicklung GmbH
Am Bauernwald 3
76764 Rheinzabern
www.ghs-software.de
Tel.: 07272/9270-39
Fax 07272/9270-90
heckmann@ghs-software.de
