Login
Newsletter
Werbung

Do, 3. Juli 2014, 15:00

Professionelles Database Publishing

Es gibt eine Reihe von Dokumenten, die sich nur schwer mit freier Software erstellen lassen. Für normale Texte wie Bücher oder Abschlussarbeiten gibt es LibreOffice und LaTeX für Zeitschriftensatz (DTP) gibt es beispielsweise Scribus. Doch vollautomatisch aus Datenbanken erzeugte Dokumente lassen sich oft nur schwer mit den genannten Programmen erzeugen. Hier soll der »speedata Publisher« helfen, der in diesem Artikel vorgestellt wird.

Einleitung

TeX beziehungsweise LaTeX kann man zwar sehr gut automatisieren, doch man stößt doch recht schnell an die Grenzen, wenn man zum Beispiel komplexe Tabellen oder automatisch überlaufende Textcontainer benötigt. Auf der anderen Seite kann Programme wie Scribus zu automatisieren eine Herausforderung sein. Im professionellen Umfeld wird hier häufig InDesign von Adobe benutzt. Für InDesign gibt es eine große Anzahl proprietärer Plugins, die aus Datenbanken mithilfe von Templates automatisiert Dokumente erzeugen können. Der bekannte W3C-Standard XSL-FO eignet sich sehr gut für die vollautomatische Erstellung von Dokumenten, die Dokumentbeschreibung (FO) ist jedoch in den Möglichkeiten stark eingeschränkt. Außerdem sind die freien Implementierungen (zum Beispiel Apache FOP) leider derzeit nicht für ihre gute Ausgabequalität berühmt.

Im Database Publishing geht es hauptsächlich um die Erzeugung von Produktkatalogen, Preislisten, Datenblättern und ähnlichen Dokumenten. Die Daten liegen üblicherweise in einer Datenbank oder in Excel-Tabellen vor. JSON, CSV oder ähnliche einfache Formate haben praktisch keine Bedeutung für Database Publishing. Auch wenn XML oft als geschwätzig und unnötig kompliziert verspottet wird, ist es fast das einzig akzeptierte Datenaustauschformat (insbesondere im professionellen Umfeld). Daher wird im Database Publishing oft XML als Datenquelle vorausgesetzt.

Als Ausgabe wird in der Regel PDF genommen, es kann aber auch (Stichwort: Cross Media Publishing) etwas völlig anderes sein, wie z.B. die Befüllung von Webshops oder Vorbereitung für Smartphone- und Tablet-Apps. Aber auch ePub hat an Bedeutung gewonnen. In diesem Artikel geht es ausschließlich um die Ausgabe in PDF. Vorgestellt wird die Software »speedata Publisher«, mit der sich die genannten Dokumente leicht erstellen lassen.

Installation

Der speedata Publisher ist ein Kommandozeilenprogramm, das für Linux, Mac OS X und Windows verfügbar ist und unter der freien AGPL-Lizenz steht. Die Quellen sind auf Github verfügbar; fertige Pakete zur Benutzung liegen auf der Webseite zum Download bereit. Es wird empfohlen, für Experimente die aktuelle Entwicklungsversion (unstable) zu benutzen. Die Installation ist einfach: das Paket liegt als ZIP-Datei vor und muss nur entpackt werden. Optional kann die PATH-Umgebungsvariable auf das Verzeichnis bin gesetzt werden. Alternativ dazu muss man (wie man es von Unix her kennt) beim Programmaufruf den relativen oder absoluten Pfad mitgeben.

Unter der Haube verwendet der Publisher LuaTeX, eine moderne Variante des Textsatzsystems TeX, das für seine hochwertige Ausgabe bekannt ist. Der Anwender kommt damit jedoch nicht in Berührung und muss sich nicht mit den Eigenheiten von TeX auseinandersetzen. Die ZIP-Pakete sind vollständig, das heißt es werden für den normalen Betrieb keine weiteren Programme benötigt. Möchte man vor dem Durchlauf einen XProc-Filter benutzen (z.B. für XSLT-Transformationen), wird ein Java Runtime Environment benötigt. Wer nur Dokumente aus XML-Dateien erzeugen möchte, braucht das jedoch nicht.

Hello world

Die Einführung in eine neue Programmiersprache geschieht meist mit einem »Hello Worl «-Programm. Bevor aber das erste Dokument erzeugt werden kann, gibt es eine kleine Erklärung zur Vorgehensweise beim Database Publishing mit dem speedata Publisher. Der Publisher benötigt immer genau zwei Dateien als Eingabe (abgesehen von Bildern und Schriftdateien, die in das Dokument eingebunden werden): eine Datendatei und eine Layoutbeschreibung. Beide Dateien müssen im XML-Format vorliegen. Die Datendatei kann beliebig strukturiert werden. Es gibt also kein festes Schema für den Aufbau der Datendatei. Der Dateiname für die Daten ist in der Voreinstellung data.xml.

Daten und Layout bilden die Grundlage des speedata Publishers

Patrick Gundlach

Daten und Layout bilden die Grundlage des speedata Publishers

Für das einfache Beispiel reicht der folgende Inhalt:

<data>Hello world</data>

Die Layoutbeschreibung muss dabei einem vorgegebenen Schema folgen. Das Schema ist als RelaxNG-Datei in der Distribution enthalten (im Unterverzeichnis share/schema). Am besten bearbeitet man die Layoutbeschreibung (das Regelwerk) mit einem XML-fähigen Editor wie zum Beispiel jEdit zusammen mit dem XML-Plug-in oder direkt mit einem spezialisieren Editor wie Oxygen. Bei beiden Editoren kann man das Schema mit dem Dokument verbinden, sodass bei der Eingabe sowohl ein Syntaxcheck als auch die Autovervollständigung und teilweise auch die Online-Hilfe (Oxygen) verfügbar ist. Das Layoutregelwerk wird unter dem Namen layout.xml gespeichert:

<Layout xmlns="urn:speedata.de:2009/publisher/en">
  <Record element="data">
    <PlaceObject>
      <Textblock>
          <Paragraph>
          <Value select="string(.)" />
        </Paragraph>
      </Textblock>
    </PlaceObject>
  </Record>
</Layout>

Neben der englischsprachigen Syntax gibt es auch eine deutschsprachige, auf diese wird hier nicht weiter eingegangen. Hat man beide Dateien (data.xml und layout.xml) in einem Verzeichnis erstellt, dann kann der Publisher mit dem Befehl sp aufgerufen werden. Wenn man nicht die Standarddateinamen für die XML-Dateien benutzt, kann man diese als Optionen mit angeben. Beispielsweise für die »Hello world«-Dateien oben:

$ sp --data=helloworld_data.xml --layout=helloworld_layout.xml

Es wird dann eine PDF-Datei publisher.pdf erstellt, die die Worte »Hello world« enthält.

Die Anweisungen im Regelwerk setzen sich zusammen aus deklarativen Befehlen (Farben festlegen, Schriftarten laden), strukturierenden Elementen (Zugriff auf Daten, Programmierkonstrukte) und Ausgabeanweisungen (Bilder, Texte, Tabellen, Barcodes u.ä.). Da es derzeit noch keinen Standard für diese Art von Layoutbeschreibung gibt, orientiert sich das Regelwerk an HTML, XPath, XSLT und CSS (alles W3C-Standards).

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung