Im folgenden wird anhand eines Filter für den Export einer ZMS-Publikation als OpenOffice-Dokument beispielhaft das ZMS-Filterkonzept gezeigt.
Seit ZMS 2.1 existiert in der ZMS-Konfiguration ein Menue-Eintrag "Filter". Dort lassen sich zwei Elementtypen konfigurieren:

  1. Filter ist eine Sequenz von Prozessen samt spezifischer XSL/conf-Files und
  2. Prozesse erlauben die rechnerspezif. Parametrisierung der Transformer/Konverter in Form von einer Konfiguration für die erforderlichen Einzelschritt-Aufrufe der externen Applikationen.

Filter-Menü: Definition von Filtern und Prozessen

Um z.B. einen OpenOffice-Filter zu schreiben, geht man folgendermassen vor:

  1. Anlage der Ziel-Elemente im OO und zugehörige Fein-Definition des Layouts
  2. Extraktion der OO-Präambel (XML-Code in der Art wie <office:font-decls><style:font-decl style:name="StarSymbol" fo:font-family="StarSymbol" style:font-charset="x-symbol"></style:font-decl>...) als "Processing-Instruction" für die Einleitung des Transformationsresultats und der Styles.xml; beide Files sowie ggf. zusätzlich erforderliche Fragmente (für Titelei etc.) werden in den Content an definierten Knoten implantiert (siehe Screenshot weiter unten) und durch den späteren Transformationsprozess in den Zielstrom zurückgeschrieben.
  3. Konfiguration der korrespondierenden Format-Elemente im ZMS
  4. Programmierung des XSL-Transformers
  5. Konfiguration des ZMSfilters, der die die XSLs sequenziert (in der Regel handelt sich um die 2 Transformationsschritte 1. XHTML 2. OOXML.)

Ein Filter setzt sich aus einer Squenz von 'Prozessen' zusammen; jedem 'Prozess' wird eine Konfurationsdatei bzw. Transformationsdatei (z.B. XSL-file) übergeben.

Beispielhafter Contentstrom mit eingestreuten "Processing-Instruction"-Elementen, die besondere Sektion im Zielformat bereits in ZMS vorbereiten (z.B. Layoutvariantion in der Titelei, Position des Inhaltsverzeichnisses etc.)

Für einen routinierten Export empfieht es sich, weitere Details zu berücksichtigen:
wenn das OO-Exportat nach dem Export schlussendlich fein-gesetzt wird und der Umbruch durch die Bildgrößen seinen Feinschliff erhält, sollte beim Folge-Export (der Neuauflage) die investierte Arbeit nicht umsonst gewesen sein. Dafür lässt sich ein XSL-Verfahren entwickeln, bei dem der Export die OO-spezifischen Bildparameter aus dem letzten OO-Feinsatz extrahieren kann, d.h. der Export "lernt aus der Alt-Ausgabe".

Eine umgekehrte Transformation ist in analoger Weise zu implementieren. Voraussetzung ist natürlich in beiden Fällen die strenge Korrespondenz aller Format-Elemente. Bei solchen Transformationen zahlt sich die DTD-Konformität aus: es ist klar, dass nicht definierte (inline-) Elemente bzw. non-XHTML-Artefakte die Transformation mehr oder minder stark behindern können.

PDF-Erzeugung mit HTMLdoc

Das command line Tool 'HTMLDOC' erlaubt eine recht simple, aber in vielen Fällen ausreichende, Konvertierung von HTML-Strömen in das PDF-Format. Der zugehörige Filter benötigt nur zwei Schritte:

  • HTML-Normalisierung mit Tidy ("Säuberung" des HTML-codes)
  • Übergabe des HTML-Stroms an HTMLdoc zur Transformation nach PDF

Tidy-Konfiguration: die UTF-8-Codes aus ZMS müssen nach Latin-1 gewandelt werden, damit sie von HTMLdoc korrekt tzransformiert werden können.

add-xml-decl: no
doctype: omit
enclose-block-text: yes
enclose-text: yes
input-encoding: utf8
char-encoding: utf8
output-encoding: latin1
drop-font-tags: yes
numeric-entities: yes

Installation: auf dem System müssen HTMLdoc und Tidy installiert bzw. deren Pfade bekannt sein. Die untenstehende XML-Konfigurationsdatei wird in das Konfigurations-Menü "Filter" importiert. Die Programm-Pfade werden in den beiden batch-Steps "htmldoc" und "tidy" angepasst.

HTMLdoc-Filter zur PDF-Generierung

WICHTGER HINWEIS: Die in den beiden batch-Schritten eingesetzten Pfade für die Programmaufrufe (z.B. C:\Programme\HTMLDOC\) müssen an die lokalen Verhältnisse angepasst werden, damit der Programm-Aufruf aus dem ZMS-Filter auch klappt.
Unter Linux könnten die beiden Prozess-Schritte z.B. so aussehen:

htmldoc --book --toctitle "Table of Contents" --header t.l
--size A4 -t pdf13 -f {out.pdf} {in}

tidy -asxml -config {trans} -m {in}

Erstellt von: Dr. Frank Hoffmann , erstellt am:  27.06.2008 , zuletzt geändert: 27.06.2008