Oracle BI Publisher - Template Builder for Word (RTFLayout-Templates) Version 10.1.3.4.1 Seitenkopf und –fuß im RTF-Template definieren Viele Berichte sind im Inhalt und Umfang zwar stark variabel, sollen aber auf jeder Dokumentseite mit einem einheitlichen Layout aufwarten. Dazu gehört die Ausgabe desselben Kopfs und Fußes, zum Beispiel mit dem Firmenlogo oder den Kontaktdaten. Dieser Tipp beschreibt die verschiedenen Möglichkeiten, innerhalb eines RTFTemplates einen Seitenkopf oder -fuß zu definieren, der dann auf jeder Seite des Berichts ausgegeben wird. Soweit nicht anders angegeben, funkioniert die Ausgabe sowohl im PDF als auch RTF-Format. 1. Word-Funktionalität Word definiert bereits Bereiche für den Seitenkopf und -fuß. Diese lassen sich über Ansicht -> Kopf- und Fußzeile zur Bearbeitung öffnen. Die Kopf- und Fußzeile gilt in der Standardeinstellung für alle Seiten des Berichts. Für die erste Seite und gerade/ungerade Seiten lassen sich aber auch eigene Kopf- und Fußzeilen erstellen. Dies kann unter Datei -> Seite einrichten -> Layout über die Optionen Gerade/ungerade anders und Erste Seite anders aktiviert werden. Für jede dieser beiden Optionen wird eine eigene Seite im RTF-Dokument benötigt, auf welcher die zugehörige Kopf- und Fußzeile definiert wird. Layout-Option Gerade/ungerade Erste Seite anders anders Seite 2 Seite 3 Kopf- und Fußzeile gilt für X alle Seiten erste Seite X ungerade Seiten erste Seite X X Seite 1 alle Seiten ab Seite 2 gerade Seiten gerade Seiten ungerade Seiten ab Seite 3 Umfasst das RTF-Template nicht genug Seiten, um alle Kopf- und Fußzeilen zu definieren, empfiehlt sich folgendes Vorgehen: 1. Am Ende des Templates Seitenumbrüche einfügen, bis die benötigte Anzahl an Seiten erreicht ist. 2. Die Kopf- und Fußzeilen wie benötigt anpassen. 3. Die zuvor eingefügten Seitenumbrüche wieder entfernen. Dies ist notwendig, da BI Publisher ansonsten noch entsprechend viele leere Seiten an den Bericht anhängen würde. Die in Schritt 2 definierten Kopf- und Fußzeilen werden beim Entfernen der Seitenumbrüche nicht gelöscht, sondern sind im RTF-Template nur versteckt. Ein Nachteil der Word-Kopf- und Fußzeilenbereiche ist, dass sich dort keine Textformularfelder einbinden lassen. Funktionen des Template-Builders für Word wie das Einfügen von Feldern, Tabellen über den Tabellenassistenten etc. sind dort damit nicht verwendbar. Referenzen auf die XML-Datenelemente und anderer Code können aber immerhin als Klartext eingebunden werden. Der so hinterlegte Code erscheint allerdings nicht im Feld-Browser, und es können Layoutprobleme wie unerwünschte Umbrüche/Leerzeilen/Leerzeichen oder zu breite Tabellenspalten auftreten, wenn der Code zu viel Platz in Anspruch nimmt. Um dem entgegenzuwirken, gibt einige Möglichkeiten, den Platzbedarf des Codes zu verringern oder Code ganz einzusparen: Die Daten sollten im XML so bereitgestellt werden, dass diese für die Ausgabe im Kopf oder Fuß weder umorganisiert (Umgruppierung, Umsortierung, Filterung) noch deren Werte verändert werden müssen (Berechnungen, String-Operationen). Ziel ist das Einsparen von Operationen. Die für die Referenzierung von XML-Daten benötigten X-Path-Ausdrücke sollten so kurz wie möglich gehalten werden. Hierbei helfen o in der XML-Hierarchie möglichst weit oben platzierte Daten => Anzahl der Parents reduzieren o kurze Bezeichner im XML Bei Code-Bestandteilen, die nicht für die Ausgabe formatiert werden müssen (<?for-each: ...?>, <?if: ...?>, <?end ...?> etc), kann weiterer Platz gespart werden durch o Eingabe mit kleinem Schriftgrad (bis runter zu 1) o Heruntersetzen der Skalierung (Text markieren, Format -> Zeichen -> Zeichenabstand Option Skalierung, bis runter zu 1%) Darunter kann allerdings die Lesbarkeit des Templates stark leiden. 2. BI-Publisher-Syntax Eine weitere Möglichkeit zur Erstellung eines Seitenkopfs/-fußes bietet der Ausdruck <?start:body?><?end body?>. Alle Eingaben vor <?start:body?> ergeben den Seitenkopf, alles nach <?end body?> den Seitenfuß. Der Inhalt zwischen <?start:body?> und <?end body?> definiert den restlichen Seiteninhalt. Bei der Ermittlung von Kopf- und Fußinhalt wird nur der aktuelle Dokumentabschnitt betrachtet. <?start:body?> <?end body?> darf pro Dokumentabschnitt auch nur einmal vorkommen. Der Vorteil dieser Variante im Vergleich zur Word-Kopf-/Fußzeile ist, dass die normale Seiteneingabe benutzt werden kann und damit die Verwendung von Textformularfeldern möglich ist. Allerdings ist die Definition eines eigenen Layouts für gerade und ungerade Seiten gar nicht möglich und für die erste Seite nur dann, wenn diese als eigener Abschnitt angelegt werden kann. Andererseits kann ein eigenes Layout für die letzte Seite erstellt werden (nur für PDF-Ausgaben). Vorgehen: 1. Am Ende des RTF-Templates einen Abschnittsumbruch einfügen 2. Nach dem Abschnittswechsel den Inhalt für den Kopf der letzten Seite erstellen. 3. Im Anschluss an den Seitenkopf diesen Code einfügen: <?start@last-page:body?><?end body?> Anders als bei <?start:body?><?end body?> bleibt der Inhalt leer. 4. Darunter den Inhalt für den Fuß der letzten Seite einfügen. <?start@last-page:body?><?end body?> dient nur dazu, den für die letzte Seite abweichenden Kopf und Fuß zu definieren. Der eigentliche Seiteninhalt wird aus dem vorangehenden Dokumentabschnitt bezogen, in diesem Fall also aus <?start:body?><?end body?>. Besteht die Ausgabe nur aus einer Seite, wird diese mit dem normalen Seitenkopf und -fuß ausgegeben. Um in diesem Fall stattdessen das Layout der letzten Seite anzuwenden, kann <?start@last-page-first:body?><?end body?> anstelle von <?start@last-page:body?><?end body?> verwendet werden. <?start@last-page:body?><?end body?> lässt sich auch ohne vorangehendes <?start:body?><?end body?> verwenden. Damit wird ein zusammengesetztes Layout unter Verwendung von Word-Kopf- und Fußzeilen möglich.