Grundlagen und Funktion von ediarum.PDF

ediarum.PDF ist ein in ediarum.BASE.edit integriertes Feature, um direkt aus der Arbeitsoberfläche von Oxygen XML heraus XML-Dokumente als PDF auszugeben.

Grundlagen von ediarum.PDF

ediarum.PDF besteht aus verschiedenen XSLT-Skripten und CSS-Dateien, die im Zusammenspiel ein PDF generieren. Zum Einsatz kommt dabei das CSS3 paged media module (sog. Print-CSS) und Transformationsszenarien des Oxygen XML Authors.

Während der mehrstufigen PDF-Generierung wird zuerst aus dem vorliegenden XML-Dokument mit Hilfe von XSLT-Skripten eine HTML-Datei generiert und zwischengespeichert. Diese enthält bereits alle Inhalte und Verweise für das spätere Dokument. In einem zweiten Schritt wird die zwischengespeicherte HTML-Datei dann mittels Print-CSS in ein PDF umgewandelt, wobei die CSS-Datei neben Formatangaben auch Regeln für das Setzen von Seitenzahlen und Fußnoten sowie allgemeine Layout-Regeln enthält. Das so generierte PDF wird im Downloads-Ordner des ausführenden Nutzenden abgespeichert.

Abbildung 1. Grundlegender Ablauf der PDF-Transformation.


Bestandteile und Zusammenspiel von ediarum.PDF

Für die Umwandlung von einer XML- in eine PDF-Datei kommen verschiedene XSLT-Skripte und CSS-Regeln zum Einsatz, die teilweise aufeinander aufbauen.
  • pdf_print.xsl: Bildet den Kern von ediarum.PDF. Hier werden die zur Umwandlung von XML nach HTML benötigten Templates in der Standardreihenfolge aufgerufen. Die Templates sind unabhängig voneinander und können für spätere projektspezifische Anpassungen wie Bausteine frei kombiniert werden, um so die Reihenfolge der Bestandteile des Dokuments nach belieben anzupassen. Die pdf_print.xsl wird bei Ausführen der PDF-Generierung als zentrales Skript der Standard-Einstellungen von der pdf_print_project.xsl aufgerufen und lädt in der Folge alle weiteren benötigten Skripte.
  • pdf_print_header.xsl: Dieses XSLT-Skript enthält die Standard-Templates für den teiHeader (Kopfblock) des Dokuments.
  • pdf_print_content_templates.xsl: Dieses XSLT-Skript enthält die Standard-Templates für den body des Dokuments, also Textelemente und Fußnoten. Umfangreichere Programmteile sind als Funktionen in pdf_print_content_functions.xsl ausgelagert und werden eingebunden.
  • pdf_print_content_functions.xsl: Funktionen für umfangreichere Verarbeitungen in Standard-Templates, werden durch pdf_print_content_templates.xsl aufgerufen.
  • ediarum_pdf.html: Datei dient als Speicherort für das temporäre HTML-Dokument, welches die Verarbeitungsgrundlage für das PDF bildet. Wird bei jeder PDF-Generierung überschrieben.
  • pdf_print.css: Die CSS-Datei enthält Regeln zum Standard-Layout (Textelemente und Seitenstruktur des PDF) und wird während der PDF-Generierung auf die temporäre ediarum_pdf.html angewandt, um daraus ein PDF zu generieren.
  • pdf_print_project.xsl: Das erste Skript, was für die PDF-Generierung aufgerufen wird. Hier sind grundlegende Parameter (z.B. URL für Registerverknüpfung) und Einstellungen (z.B. Darstellung von Sachkommentaren als Fuß- oder Endnoten) gegeben. Das Skript ruft die pdf_print.xsl auf, von der aus die weiteren Templates geladen werden. Falls statt der Standard-Einstellungen projektspezifische Skripte verwendet werden sollen, sind diese hier zu hinterlegen.
  • pdf_print_project.css (optional): Falls gewünscht, kann diese Datei für projektspezifische Layout-Anpassungen angelegt werden.
Abbildung 2. Zusammenspiel der an der PDF-Transformation beteiligten Skripte.


Ablauf: Bei Aufruf der PDF-Generierung wird zuerst das Skript pdf_print_project.xsl ausgeführt, in dem grundlegende Parameter und Einstellungen gespeichert sind. Je nach Einstellung werden von hier aus projektspezifische Skripte und/oder das Standardskript pdf_print.xsl geladen. Dieses ruft aus den Dateien pdf_print_header.xsl und pdf_print_content_templates.xsl (inkl. ausgelagerter Funktionen aus pdf_print_content_functions.xsl) die Templates für die Verarbeitung von teiHeader und body des XML-Dokuments in der Standardreihenfolge auf. Die pdf_print_project.xsl bindet zudem das Standard-Layout pdf_print.css ein, welches bei projektspezifischen Anpassungen jedoch durch die pdf_print_project.css überlagert wird.

Einbindung

ediarum.PDF ist in der Standardinstallation von ediarum.BASE.edit enthalten und kann direkt verwendet werden. Ohne richtig eingerichtete Projektverbindung stehen allerdings nicht alle Funktionen zur Verfügung. Richten Sie dazu eine projektspezifische Anpassung von ediarum.PDF ein.