Oracle BI Publisher Tipp

Externe SVG Grafiken in PDF Reports

Autor

Wolfgang Kriebel

Version

10.1.3.4

Datum

29.04.2009


Externe Grafiken einbinden

Im BI Publisher besteht die Möglichkeit externe Grafiken einzubinden. Dafür gibt es einen Menüpunkt im Plug-In Menü von MS Word. Was ist aber zu tun, wenn der Bedarf besteht, eine SVG-Grafik einzubinden, die von einenem anderen Program generiert wurde?

Der BI Publisher bietet die Möglichkeit, Datenfelder oder auch Word Form-Felder mit <fo: - Tags zu versehen. In dem Beispiel das ich hier anführe habe ich eine Datenquelle, die zwei unterschiedliche SVG-Dateien referenziert, die beide der Einfachheit halber auf C:\ liegen.

<?xml version="1.0" encoding="UTF-8"?>
<ROWSET>
    <ROW>
        <SVG_PATH>C:/RedBlue.svg</SVG_PATH>
    </ROW>
    <ROW>
        <SVG_PATH>C:/ErsteHilfe.svg</SVG_PATH>
    </ROW>
</ROWSET>

Im Demotemplate habe ich die Daten geladen, eine Überschrift erstellt und einen Wiederholungsrahmen für alle Zeilen erstellt und mit einem kurzen Text versehen.


Als Ergebnis erhalte ich eine Liste aller Pfade im Datentemplate. Bis hier her also nichts Neues. Um die Grafiken jetzt auch noch in der zu generierenden PDF-Datei anzuzeigen muss das Datenfeld modifiziert werden. Das erste Feld lasse ich zur Kontrolle des Pfades stehen und füge einfach ein zweites Feld 'SVG_PATH' ein. Durch einen Doppelklick werden die Eigenschafen des Feldes geö:ffnet und das Default-Tag

<?SVG_PATH?>

durch

<fo:external-graphic src="{.//SVG_PATH}"/>

ersetzt und ein sprechender Name für das Grafikobjekt gesetzt. Dabei ist {.//SVG_PATH} der Verweis auf das entsprechende Datenfeld im Wiederholungsrahmen.


Der Tag <fo:external-graphic src="{.//SVG_PATH}"/> kann mit allen Parametern versehen werden, die der XSL-FO Standard hergibt. Das führt jetzt hier an dieser Stelle aber zu weit. Wenn das Report-Template jetzt mit den Daten aus dem Daten-Template zur Vorschau zusammengeführt wird (als PDF) kommt folgenden dabei heraus:


Im Tag <fo:external-graphic src="{.//SVG_PATH}"/> kann nicht nur eine lokale Datei referenziert werden. Es kann auch eine URL abgefragt werden, wenn die SVG-Grafiken auf einem Webserver vorgehalten werden. Die URL muss dabei den normalen Regeln einer URL entsprechen: <fo:external-graphic src="http://host:port/ErsteHilfe.svg"/>

Die Demodaten, das Demotemplate und die beiden SVG-Dateien gibt es zum Dowmload hier.