21. Deutsche Oracle Anwenderkonferenz
PDF Erstellung mit APEX - eine kostenlose
Alternative
Dietmar Aust
Opal-Consulting, Köln
1. Dezember 2008
Agenda
Vorstellung Opal-Consulting
PDF-Erstellung mit APEX
Berichterstellung mit JasperReports
Integration als externer Bericht
Integration über XML Feed
Fazit
PDF Erstellung mit APEX
Dietmar Aust
Seite 1
Vorstellung Opal-Consulting
 Dipl.-Inform. Dietmar Aust, Freelance Consultant
 1997-2000: Consultant bei der Oracle Deutschland GmbH /
Düsseldorf
 Schwerpunkte: Oracle Portal, Oracle Reports, Oracle Forms,
PL/SQL, PLSQL Web Toolkit (OWA)
 Seit 09/2000: Freiberuflich
 Schwerpunkte: Oracle Portal, Oracle Reports, Oracle Application
Express, Oracle Express Edition
 Seit Nov. 2005 ausschließlich APEX Entwicklung
 Aktivitäten
 http://daust.blogspot.com/
 http://forums.oracle.com/forums/forum.jspa?forumID=137 (APEX)
 http://forums.oracle.com/forums/forum.jspa?forumID=251 (XE)
PDF Erstellung mit APEX
Dietmar Aust
Seite 2
PDF–Erstellung mit APEX
Die Problemstellung
 Wozu PDF Berichte?
 Druckfähig / pixelperfektes Layout
 Standard – Berichtswesen
 Formulare, Rechnungen, Angebote
 Möglichkeiten der PDF – Erstellung mit APEX
 Unterstützung seit 3.0
 Standard Support
− Apache FOP (nur PDF)
− Cocoon (PDF und RTF)
 Erweiterter Support
− Erfordert den BI-Publisher von Oracle !
 Custom Solutions
− Beliebige Reporting Engine anbinden (URL-interface)
− Z.B. Oracle Reports, Crystal Reports, JasperReports, BIRT, etc…
PDF Erstellung mit APEX
Dietmar Aust
Seite 3
PDF–Erstellung mit APEX
Standard-Integration - Berichtsregion
Client
Apache /
mod_plsql
1
 Alternativen
APEX
 1. XSL/FO Transformation mit FOP (nur PDF)
 2. Cocoon (PDF + RTF)
2
 Definition:
 Auf dem Bericht
J2EE / Tomcat
 Eigene Berichtslayouts mit
XSLT spezifizieren
PDF Erstellung mit APEX
Dietmar Aust
Seite 4
PDF–Erstellung mit APEX
Standard-Integration
Apache /
mod_plsql
 Ablauf
1
APEX
 1: Link ruft APEX Funktion auf
Client
 2: APEX ermittelt XSL des Layouts
und das XML des Berichts
 3: APEX macht Post an J2EE
Server, übermittelt die
Berichtsdefinition zusammen mit den Daten
PDF Erstellung mit APEX
Dietmar Aust
Seite 5
2
J2EE / Tomcat
PDF–Erstellung mit APEX
Erweiterte Integration mit dem BI-Publisher
 Optionen
 Berichtsabfragen definieren (Alle Items der Applikation, multiple
Abfragen integrieren)
 Eigene Berichtslayouts mit MS Word gestalten
 Ausgabe in RTF und Excel
 Was bedeutet das?
 Lizenz für den BI-Publisher
 Sehr mächtige Integration
 Langfristig evtl. Option, insbesondere wenn die Fachabteilungen
viele Berichte in Word / Excel haben
 Einbindung von Power Usern
 Installation
 http://www.oracle.com/technology/products/database/application_
express/html/configure_printing.html
PDF Erstellung mit APEX
Dietmar Aust
Seite 6
PDF–Erstellung mit APEX
 Konfiguration: /pls/apex/apex_admin (Instanz-Administration)
 Home>Service verwalten>Instance-Einstellungen
PDF Erstellung mit APEX
Dietmar Aust
Seite 7
PDF–Erstellung mit APEX
Custom Integration
Apache /
mod_plsql
 Beliebige Reporting Engines
 JasperReports
Client
 Oracle Reports
 … beliebige, die aufgerufen werden über:
1
APEX
2
3
− URL
− Betriebssystem-Aufrufe
− … (external procedure calls)
J2EE / Tomcat
Berichtsdefinitionen
Daten aus Oracle mit JDBC
 http-Tunnel für beliebige Dateien
 Wie? Tunnel mit utl_http, Berücksichtigung des MimeTypes
 Wozu? => Security (nur wenige Ports) und Autorisierung (wer darf
was)?
PDF Erstellung mit APEX
Dietmar Aust
Seite 8
JasperReports
Übersicht
 JasperReports





sehr beliebte Reporting Engine
Java Bibliothek, um Reporting in Applikationen zu integrieren
Standard im JBOSS
Viele Projekte und große Kunden setzen es ein
Berichtsdefinitionen in XML
 Funktionalitäten









Datenquellen : JDBC, XML, OLAP, TEXT, …
Ausgabeformate: PDF, XLS, HTML, CSV, TEXT, RTF, ODF
Matrixberichte
Multiple Datenquellen pro Bericht
Berichtstrigger
Unterberichte
Bedingte Formatierung
Fonts, Unicode, NLS
…
PDF Erstellung mit APEX
Dietmar Aust
Seite 9
JasperReports
Beispiele
PDF Erstellung mit APEX
Dietmar Aust
Seite 10
JasperReports
Beispiele
PDF Erstellung mit APEX
Dietmar Aust
Seite 11
JasperReports
Beispiele
PDF Erstellung mit APEX
Dietmar Aust
Seite 12
JasperReports
Berichtsdesign mit dem iReport Designer
 iReport Designer
 Graphischer Editor, um XML – Berichtsdefinitionen für
JasperReports zu erstellen
 Aktuell zwei Versionen, klassisch und Netbeans
 Download des iReport Designers
 http://ireport.sourceforge.net/
PDF Erstellung mit APEX
Dietmar Aust
Seite 13
JasperReports
Berichtsdesign mit dem iReport Designer
PDF Erstellung mit APEX
Dietmar Aust
Seite 14
JasperReports
Berichtsdesign mit dem Report Designer
 Demo
PDF Erstellung mit APEX
Dietmar Aust
Seite 15
Integration I – externe Berichte
http Tunnel
 Berichtsdefinition in J2EE Applikation
 Aufruf aus APEX:
 Url für OnDemand Prozess
f?p=&APP_ID.:0:&APP_SESSION.:APPLICATION_PROCESS=prc_show_url:::F_TMP_1:
&F_TMP_1.
 OnDemand Prozess prc_show_url
declare
l_base_url varchar2(2000) :=
'http://localhost:8080/jasperIntegration/report?_repName=Departments';
begin
xlib_http_pck.display_url_raw(p_url => l_base_url || '&p_deptno=' ||
v('F_TMP_1'));
exception
when others then
htp.p(sqlerrm);
end;
PDF Erstellung mit APEX
Dietmar Aust
Seite 16
Integration I – externe Berichte
http Tunnel
 Implementierung des http Tunnels
BEGIN
l_http_request := UTL_HTTP.begin_request (p_url);
DBMS_LOB.createtemporary (l_blob, FALSE);
BEGIN
LOOP
UTL_HTTP.read_raw (l_http_response, l_raw, l_buffer_size);
DBMS_LOB.writeappend (l_blob, UTL_RAW.LENGTH (l_raw), l_raw);
END LOOP;
EXCEPTION
WHEN UTL_HTTP.end_of_body
THEN
UTL_HTTP.end_response (l_http_response);
END;
HTP.p ('Content-length: ' || DBMS_LOB.getlength (l_blob));
OWA_UTIL.http_header_close;
WPG_DOCLOAD.download_file (l_blob);
DBMS_LOB.freetemporary (l_blob);
END;
PDF Erstellung mit APEX
Dietmar Aust
Seite 17
Integration I – externe Berichte
J2EE / Servlet
 Implementierung des Servlets
ds = (DataSource) initContext.lookup("java:comp/env/jdbc/"
+ dataSource);
conn = ds.getConnection();
jasperPrint = JasperFillManager.fillReport(reportFileName
+ ".jasper", reportParams, conn);
ServletOutputStream out = response.getOutputStream();
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
exporter.exportReport();
PDF Erstellung mit APEX
Dietmar Aust
Seite 18
Integration I – externe Berichte
Demo der Integration und der vereinfachten API
 Demo
PDF Erstellung mit APEX
Dietmar Aust
Seite 19
Integration II – XML Feed
Übersicht
 „echter“ Ersatz des BI-Publishers
 Kommunikation APEX  BI-Publisher:
 XML – Feed der Daten
 Berichtsdefinition als RTF-Template
 BI-Publisher werden die Daten mit dem Template verbunden
und im gewünschten Format zurückgeliefert
PDF Erstellung mit APEX
Dietmar Aust
Seite 20
Integration II – XML Feed
Umsetzung
 Berichtsabfrage erstellen
 XML exportieren
 Berichtslayout mit JasperReports erstellen
 Berichtslayout hochladen (.jrxml)
 Berichtslayout auf der Region festlegen
 J2EE Applikation:
 Berichtsdefinition kompilieren (.jrxml => .jasper)
 Bericht befüllen (XML an JasperReports übergeben)
 Ergebnis zurückliefern
PDF Erstellung mit APEX
Dietmar Aust
Seite 21
Integration II – XML Feed
Demo
 Demo
PDF Erstellung mit APEX
Dietmar Aust
Seite 22
Fazit
 Bloß nicht programmieren !!! (z.B. PL/PDF)
 JasperReports: kostenlos, stabil, performant und flexibel (API)
 iReport Designer: kostenlos, intuitiv, mächtig und nicht
kompliziert
 Integration in APEX ist einfach und sicher umzusetzen
 Java Servlet Programmierung notwendig
 RTF Export nicht optimal
 Textfelder / Positionsrahmen nicht einfach zu editieren
 Keine Ränder im Dokument
PDF Erstellung mit APEX
Dietmar Aust
Seite 23
APEX Training - Ankündigung
 Oracle APEX: Knowhow aus der Praxis!
 23.03 – 25.03.2009 in Bensheim
 http://www.opal-consulting.de/training
 Dozenten:
− Patrick Wolf (APEX Entwickler des Jahres 2007; Oracle ACE
Director)
− Denes Kubicek (APEX Entwickler des Jahres 2008; Oracle ACE)
− Dietmar Aust
 Praxisrelevant!
 Lessons learned von vielen APEX Projekten
 Hands-On Sessions
PDF Erstellung mit APEX
Dietmar Aust
Seite 24
Kontakt
 Opal-Consulting Dietmar Aust
 Web: http://www.opal-consulting.de
 Blog: http://daust.blogspot.com/
 E-Mail: [email protected]
PDF Erstellung mit APEX
Dietmar Aust
Seite 25