PDF-Ausgabe mit dynamischen Bildern
Bereits vor einiger Zeit haben wir Tipps zur
druckfreundlichen PDF-Ausgabe mit Application Express und dem
BI Publisher vorgestellt. In diesen beiden Dokumenten finden
Sie Informationen zur Installation und Konfiguration des BI Publisher
im Zusammenhang mit Application Express.
Heute erfahren Sie, wie Sie dynamische Bilder
(also Bilder aus einer Tabelle)
in die PDF-Dokumente aufnehmen können - dies ist interessant, wenn Sie bspw. einen Produktkatalog
verwalten und dazu PDF-Ausgaben erzeugen möchten - natürlich sollen die
Produktfotos ebenfalls im Dokument enthalten sein.
Als Ausgangspunkt werden wir eine Anwendung zur "Bildbearbeitung mit Application
Express nehmen". Diese war ebenfalls Gegenstand eines
Community-Tipps. Damit Sie diesen nun jedoch nicht komplett
nacharbeiten müssen, können Sie die Anwendung als
hier als Packaged Application
herunterladen.
Packen Sie das ZIP-Archiv einfach aus und importieren Sie die Anwendung ganz normal
(Zeichensatz UTF-8).
Abbildung 1: Importieren der Bildbearbeitungs-Anwendung
Starten Sie die Anwendung nach dem Import und laden Sie einige Bilder hoch. Anschließend
sollte die Anwendungsseite in etwa wie in Abbildung 2 aussehen.
Abbildung 2: Anwendungsseite nach dem Hochladen einiger Bilder
Machen Sie sich, insbesondere wenn Sie mit einer eigenen Anwendung und eigenen
Tabellen arbeiten, vor dem Erstellen des PDF-Layouts noch mit einigen Details
vertraut - folgende Informationen sind für die weitere Arbeit wichtig:
-
Die Bilder der heruntergeladenen Anwendung liegen in der Tabelle
INTERMEDIA_IMAGE
in der Spalte DOKUMENT (im
Community-Tipp
wird dagegen die Tabelle BILDER_TAB
und die Spalte BILD verwendet).
-
Die URL zum Abrufen und Darstellen eines Bildes ist wie folgt:
Diese URL benötigen zum Einbinden der Bilder in das Layout-Template.
Hinterlegen Sie nun die SQL-Abfrage für die PDF-Ausgabe. Alle
Informationen der Webseite sollen auch auf dem PDF-Dokument enthalten sein.
Navigieren Sie dazu zu den
Gemeinsamen Komponenten und dort
zu Berichtabfragen.
Klicken Sie dort auf Erstellen, um eine
neue Abfrage anzulegen.
Abbildung 3: Berichtsabfrage erstellen
Achten Sie darauf, dass Sie die Anwendungs- und Sessioninformationen einbeziehen;
konkrete Elemente müssen Sie jedoch in diesem Beispiel nicht
auswählen. Wenn Sie allerdings mit einer eigenen Anwendung arbeiten und
Filter in ihren SQL-Abfragen verwenden, nehmen
Sie die relevanten Elemente hier mit
Hinzufügen auf. Klicken Sie danach
auf Weiter und hinterlegen Sie danach
die SQL-Abfrage, welche die Daten
für die PDF-Ausgabe zusammenstellt.
Wichtig ist vor allem die "Bild-URL"; in diesem Beispiel wird das Bild durch
die Stored Procedure DISPLAY_INTMEDIA_IMAGE
bereitgestellt. Wenn Sie mit einer
eigenen Anwendung und einem eigenen Datenbestand arbeiten, achten Sie darauf, dass
die generierte URL funktioniert (testen Sie ggfs. mit dem Browser -
wenn Sie das gewünschte Bild sehen, ist die URL korrekt. Achten Sie auch darauf,
dass der BI-Publisher keine APEX-Anwendung ist - also außerhalb des APEX Session-Kontext
arbeitet.
Kodieren Sie das Parsing Schema Ihrer Anwendung ("[DB Schema]"
in der vorletzten Zeile)
zunächst hart. Wenn das Layout fertig ist, können Sie dies in
"#OWNER#" ändern.
Wenn
Sie mit einer OracleXE-Datenbank oder mit Oracle11g und dem
PL/SQL Embedded Gateway
arbeiten, müssen Sie den direkten Zugriff auf die Stored Procedure
DISPLAY_INTMEDIA_IMAGE
zunächst freischalten - in
diesem Blog Posting von Dietmar Aust erfahren Sie, wie
das geht.
Nachdem Sie auf Weiter geklickt und damit
das SQL gespeichert haben, markieren
Sie die Option XML-Daten und laden
Sie die Berichtsdaten mit der Schaltfläche
Herunterladen als XML-Dokument auf
Ihre lokale Festplatte.
Abbildung 4: XML-Daten herunterladen
Lassen Sie Ihren Browser nun auf diesem Dialog stehen - die nächsten Schritte
werden mit Microsoft Word durchgeführt. Anschließend (nach der Erstellung des
Layouts mit Microsoft Word) setzen Sie die Bearbeitung an dieser Stelle fort.
Wenn
Sie jetzt die Berichtsabfrage dennoch jetzt schon speichern möchten, müssen Sie beim
Layout Generisches Berichtslayout verwenden auswählen.
In diesem Fall laden Sie
das fertige Layout nach Erstellung als Berichtslayout
(ebenfalls unter Gemeinsame Komponenten) hoch
und weisen es anschließend der Berichtsabfrage
unter Berichtslayout zu.
Damit die BI Publisher Komponenten in MS Word bereitstehen, muss
BI Publisher Desktop
auf Ihrem PC installiert sein. Installationshinweise dazu finden Sie im
im How To-Dokument "Maßgeschneiderte Layouts mit dem BI Publisher".
Wählen Sie im BI Publisher Menü Daten die
Option XML-Daten laden.
Abbildung 5: XML-Daten in BI Publicher Desktop hochladen
Nach der Meldung Daten erfolgreich geladen können
Sie mit der Gestaltung des
Layouts beginnen. Navigieren Sie im Menü
Einfügen zum
Tabellen-Assistent - die
Bilder sollen wie auf der Web-Seite in Tabellenform dargestellt werden.
Abbildung 6: BI Publisher Desktop: "Tabellen Assistent"
Wählen Sie die Darstellungsform Tabelle
und klicken Sie auf Weiter.
Abbildung 7: Daten-Set auswählen
Wählen Sie nun die Wiederholungsstruktur
(ROWSET/ROW) im XML-Dokument wie in Abbildung 7
aus.
Abbildung 8: Spalten für tabellarische Darstellung wählen
Klicken Sie in den Dialogen für
Gruppierung und
Sortierung einfach auf Weiter.
Im letzten Dialog (Abbildung 9) können Sie die Spaltenüberschriften auswählen;
nehmen Sie Änderungen nach Wunsch vor und erstellen Sie die Tabelle mit einem
Klick auf Beenden.
Abbildung 9: Spaltenüberschriften festlegen
Nun sehen Sie eine Tabelle in Ihrem Word-Dokument (Abbildung 10).
Abbildung 10: Erstellte Tabelle im Word-Dokument
Speichern Sie dieses Dokument nun mit dem normalen Word-Dialog
Speichern unter
ab. Speichern Sie es jedoch nicht als
.doc-Datei, sondern im
Rich Text Format (RTF)
an. Anschließend können Sie sich mit Klick auf
Vorschau und
PDF ansehen, wie
das PDF-Dokument mit diesem Layout aussehen wird.
Abbildung 11: PDF-Vorschau
Dies ist nun noch nicht, was wir wollen: Statt der URL soll das tatsächliche
Bild dargestellt werden. Klicken Sie dazu in Word in die Tabellenspalte und
entfernen Sie das Feld IMAGE_URL, so dass
die Spalte leer ist. Fügen Sie dann
mit dem Standard-Word-Dialog ein Bild ein (Abbildung 12:
Insert Picture from File)
Abbildung 12: Bild in Tabellenspalte einfügen
Dieses Bild dient nur als Platzhalter; sie können also ein beliebiges Bild nehmen;
wichtig ist, dass Sie einfache Variante Insert und
auf keinen Fall Link to File
nehmen (Abbildung 13).
Abbildung 13: Das Bild dient als Platzhalter - nehmen Sie irgendein Bild
Wenn Sie das Bild in der Tabelle sehen, navigieren Sie zu dessen Eigenschaften
(Doppelklick). Stellen Sie Höhe und Breite nach Wunsch ein und navigieren Sie
dann zum Reiter Web. Tragen Sie dort als
Alternative Text die Spalte mit der
URL wie folgt ein:
Abbildung 14: URL zum Bild als "Alternativen Text" eintragen
Schauen Sie sich die Vorschau nochmals an - Sie sollte nun in etwa
wie in Abbildung 15 aussehen.
Abbildung 15: Vorschau mit eingebetteten Bildern
Nun können Sie das Layout noch anpassen, bis es Ihnen gefällt. Speichern Sie
dann die RTF-Datei nochmals ab, schließen Sie MS Word und navigieren Sie
zurück zum Dialog Berichtslayout
in Application Express ... Dort waren Sie
vorhin stehengeblieben - Klicken Sie auf Weiter und
laden Sie im folgenden
Dialog (Abbildung 16) die soeben erzeugte RTF-Datei hoch.
Abbildung 16: RTF-Datei hochladen
Im dann folgenden letzten Dialog können Sie die PDF-Ausgabe nochmals
testen. Wenn alles zu Ihrer Zugriedenheit funktioniert, können Sie
den gelb markierten Link in die Zwischenablage kopieren, auf
Fertig stellen
klicken und den kopierten Link schließlich in Ihre Anwendungsseite aufnehmen.
(Wichtig: wenn im Link ein "&SESSION_ID." steht,
machen Sie daraus ein "&SESSION.")
Abbildung 17: Fertig: Testen ...
Navigieren Sie dazu zu der Seite, auf welcher Sie den Link zur PDF-Ausgabe
bereitstellen möchten und hinterlegen Sie an geeigneter Stelle (in einer
HTML Region oder im
Header bzw. Footer
einer anderen Region) folgenden HTML-Code:
Das Endergebnis sieht dann wie in Abbildung 18 aus
Abbildung 18: Endergebnis: PDF-Ausgabe mit dynamischen Bildern
Wenn Sie möchten, können Sie nun in der Berichtsabfrage das hart kodierte
Parsing Schema Ihrer
Anwendung durch das dynamische #OWNER# ersetzen.
Navigieren Sie dazu
wieder zu den Gemeinsamen Komponenten,
dort zu den Berichtsabfragen,
dann zu Ihrer neuen Berichtsabfrage (hier: Bilder PDF)
und bearbeiten
Sie dort die hinterlegte SQL-Abfrage wie in Abbildung 19 illustriert.
Abbildung 19: Hart kodiertes Parsing Schema in der Berichtsabfrage durch
#OWNER# ersetzen
Fertig - dieses Beispiel lässt sich problemlos auf andere Datenbestände
und Anwendungen wie Produktkataloge oder Mitarbeiterverzeichnisse
übertragen. Mit dem Oracle BI Publisher können so auch anspruchsvolle
Druckausgaben problemlos erledigt werden.
Zurück zur Community-Seite
|