Filter-Menü: Definition von Filtern und Prozessen
Autor: Dr. Frank Hoffmann, 10.11.2003
Seit ZMS 2.1 gibt es ein neues Konfigurationsinterface für frei definierbare Transformatoren ('Filter'); ein Filter besteht aus einer Kette von Einzelschritten ('Prozesse'), welche die Steuerung der externen Konverter-Applikation übernehmen.
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:
Um z.B. einen OpenOffice-Filter zu schreiben, geht man folgendermassen vor:
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.
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:
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.
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}
Resources
HTMLdocFilter.xml (2KB)
HTMLdocFilter.xml (2KB)