PDF Erstellung mit APEX - eine kostenlose Alternative
Dietmar AustOpal-Consulting, Köln
1. Dezember 2008
21. Deutsche Oracle Anwenderkonferenz
Seite 2
PDF Erstellung mit APEX Dietmar Aust
Agenda
Vorstellung Opal-Consulting
PDF-Erstellung mit APEX
Berichterstellung mit JasperReports
Integration als externer Bericht
Integration über XML Feed
Fazit
Seite 3
PDF Erstellung mit APEX Dietmar Aust
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)
Seite 4
PDF Erstellung mit APEX Dietmar Aust
PDF–Erstellung mit APEXDie 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…
Seite 5
PDF Erstellung mit APEX Dietmar Aust
PDF–Erstellung mit APEXStandard-Integration - Berichtsregion
Alternativen 1. XSL/FO Transformation mit FOP (nur PDF) 2. Cocoon (PDF + RTF)
Definition: Auf dem Bericht
Eigene Berichtslayouts mitXSLT spezifizieren
Alternativen 1. XSL/FO Transformation mit FOP (nur PDF) 2. Cocoon (PDF + RTF)
Definition: Auf dem Bericht
Eigene Berichtslayouts mitXSLT spezifizieren
APEX
Client
Apache / mod_plsql
J2EE / Tomcat
2
1
Seite 6
PDF Erstellung mit APEX Dietmar Aust
PDF–Erstellung mit APEXStandard-Integration
Ablauf
1: Link ruft APEX Funktion auf
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
APEX
Client
Apache / mod_plsql
J2EE / Tomcat
2
1
Seite 7
PDF Erstellung mit APEX Dietmar Aust
PDF–Erstellung mit APEXErweiterte 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
Seite 8
PDF Erstellung mit APEX Dietmar Aust
PDF–Erstellung mit APEX
Konfiguration: /pls/apex/apex_admin (Instanz-Administration)
Home>Service verwalten>Instance-Einstellungen
Seite 9
PDF Erstellung mit APEX Dietmar Aust
PDF–Erstellung mit APEXCustom Integration
Beliebige Reporting Engines JasperReports Oracle Reports … beliebige, die aufgerufen werden über:
− URL
− Betriebssystem-Aufrufe
− … (external procedure calls)
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)?
APEX
Client
Apache / mod_plsql
J2EE / TomcatBerichtsdefinitionenDaten aus Oracle mit
JDBC
2
1
3
Seite 10
PDF Erstellung mit APEX Dietmar Aust
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 …
Seite 11
PDF Erstellung mit APEX Dietmar Aust
JasperReportsBeispiele
Seite 12
PDF Erstellung mit APEX Dietmar Aust
JasperReportsBeispiele
Seite 13
PDF Erstellung mit APEX Dietmar Aust
JasperReportsBeispiele
Seite 14
PDF Erstellung mit APEX Dietmar Aust
JasperReportsBerichtsdesign 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/
Seite 15
PDF Erstellung mit APEX Dietmar Aust
JasperReportsBerichtsdesign mit dem iReport Designer
Seite 16
PDF Erstellung mit APEX Dietmar Aust
JasperReportsBerichtsdesign mit dem Report Designer
Demo
Seite 17
PDF Erstellung mit APEX Dietmar Aust
Integration I – externe Berichtehttp Tunnel
Berichtsdefinition in J2EE Applikation
Aufruf aus APEX: Url für OnDemand Prozess
OnDemand Prozess prc_show_url
f?p=&APP_ID.:0:&APP_SESSION.:APPLICATION_PROCESS=prc_show_url:::F_TMP_1:&F_TMP_1.
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'));exceptionwhen others then htp.p(sqlerrm);end;
Seite 18
PDF Erstellung mit APEX Dietmar Aust
Integration I – externe Berichtehttp 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;
Seite 19
PDF Erstellung mit APEX Dietmar Aust
Integration I – externe BerichteJ2EE / 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();
Seite 20
PDF Erstellung mit APEX Dietmar Aust
Integration I – externe Berichte Demo der Integration und der vereinfachten API
Demo
Seite 21
PDF Erstellung mit APEX Dietmar Aust
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
Seite 22
PDF Erstellung mit APEX Dietmar Aust
Integration II – XML FeedUmsetzung
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
Seite 23
PDF Erstellung mit APEX Dietmar Aust
Integration II – XML Feed Demo
Demo
Seite 24
PDF Erstellung mit APEX Dietmar Aust
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
Seite 25
PDF Erstellung mit APEX Dietmar Aust
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
Seite 26
PDF Erstellung mit APEX Dietmar Aust
Kontakt
Opal-Consulting Dietmar Aust Web: http://www.opal-consulting.de Blog: http://daust.blogspot.com/ E-Mail: [email protected]