pdf erstellung mit apex - eine kostenlose alternative · pdf erstellung mit apex dietmar aust...
TRANSCRIPT
PDF Erstellung mit APEX - eine kostenlose Alternative
Dietmar AustOpal-Consulting, Köln
1. Dezember 2008
21. Deutsche Oracle Anwenderkonferenz
Seite 1
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 2
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: FreiberuflichSchwerpunkte: Oracle Portal, Oracle Reports, Oracle Application Express, Oracle Express EditionSeit Nov. 2005 ausschließlich APEX Entwicklung
Aktivitätenhttp://daust.blogspot.com/http://forums.oracle.com/forums/forum.jspa?forumID=137 (APEX)http://forums.oracle.com/forums/forum.jspa?forumID=251 (XE)
Seite 3
PDF Erstellung mit APEX Dietmar Aust
PDF–Erstellung mit APEXDie Problemstellung
Wozu PDF Berichte?Druckfähig / pixelperfektes Layout Standard – BerichtswesenFormulare, Rechnungen, Angebote
Möglichkeiten der PDF – Erstellung mit APEXUnterstützung seit 3.0Standard 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 4
PDF Erstellung mit APEX Dietmar Aust
PDF–Erstellung mit APEXStandard-Integration - Berichtsregion
Alternativen1. XSL/FO Transformation mit FOP (nur PDF)2. Cocoon (PDF + RTF)
Definition:Auf dem Bericht
Eigene Berichtslayouts mitXSLT spezifizieren
Alternativen1. XSL/FO Transformation mit FOP (nur PDF)2. Cocoon (PDF + RTF)
Definition:Auf dem Bericht
Eigene Berichtslayouts mitXSLT spezifizieren
APEX
ClientApache /
mod_plsql
J2EE / Tomcat
2
1
Seite 5
PDF Erstellung mit APEX Dietmar Aust
PDF–Erstellung mit APEXStandard-Integration
Ablauf
1: Link ruft APEX Funktion auf
2: APEX ermittelt XSL des Layoutsund 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 6
PDF Erstellung mit APEX Dietmar Aust
PDF–Erstellung mit APEXErweiterte Integration mit dem BI-Publisher
OptionenBerichtsabfragen definieren (Alle Items der Applikation, multiple Abfragen integrieren)Eigene Berichtslayouts mit MS Word gestaltenAusgabe in RTF und Excel
Was bedeutet das?Lizenz für den BI-PublisherSehr mächtige IntegrationLangfristig evtl. Option, insbesondere wenn die Fachabteilungen viele Berichte in Word / Excel habenEinbindung von Power Usern
Installationhttp://www.oracle.com/technology/products/database/application_express/html/configure_printing.html
Seite 7
PDF Erstellung mit APEX Dietmar Aust
PDF–Erstellung mit APEX
Konfiguration: /pls/apex/apex_admin (Instanz-Administration)Home>Service verwalten>Instance-Einstellungen
Seite 8
PDF Erstellung mit APEX Dietmar Aust
PDF–Erstellung mit APEXCustom Integration
Beliebige Reporting EnginesJasperReportsOracle Reports… beliebige, die aufgerufen werden über:
− URL
− Betriebssystem-Aufrufe
− … (external procedure calls)
http-Tunnel für beliebige DateienWie? Tunnel mit utl_http, Berücksichtigung des MimeTypesWozu? => Security (nur wenige Ports) und Autorisierung (wer darf was)?
APEX
Client
Apache / mod_plsql
J2EE / TomcatBerichtsdefinitionen
Daten aus Oracle mit JDBC
2
1
3
Seite 9
PDF Erstellung mit APEX Dietmar Aust
JasperReportsÜbersicht
JasperReportssehr beliebte Reporting EngineJava Bibliothek, um Reporting in Applikationen zu integrierenStandard im JBOSSViele Projekte und große Kunden setzen es einBerichtsdefinitionen in XML
FunktionalitätenDatenquellen : JDBC, XML, OLAP, TEXT, …Ausgabeformate: PDF, XLS, HTML, CSV, TEXT, RTF, ODFMatrixberichteMultiple Datenquellen pro BerichtBerichtstriggerUnterberichteBedingte FormatierungFonts, Unicode, NLS…
Seite 10
PDF Erstellung mit APEX Dietmar Aust
JasperReportsBeispiele
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
JasperReportsBerichtsdesign mit dem iReport Designer
iReport DesignerGraphischer Editor, um XML – Berichtsdefinitionen für JasperReports zu erstellenAktuell zwei Versionen, klassisch und Netbeans
Download des iReport Designershttp://ireport.sourceforge.net/
Seite 14
PDF Erstellung mit APEX Dietmar Aust
JasperReportsBerichtsdesign mit dem iReport Designer
Seite 15
PDF Erstellung mit APEX Dietmar Aust
JasperReportsBerichtsdesign mit dem Report Designer
Demo
Seite 16
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.
declarel_base_url varchar2(2000) :=
'http://localhost:8080/jasperIntegration/report?_repName=Departments';beginxlib_http_pck.display_url_raw(p_url => l_base_url || '&p_deptno=' ||
v('F_TMP_1'));exceptionwhen others then htp.p(sqlerrm);
end;
Seite 17
PDF Erstellung mit APEX Dietmar Aust
Integration I – externe Berichtehttp Tunnel
Implementierung des http Tunnels
BEGINl_http_request := UTL_HTTP.begin_request (p_url);
DBMS_LOB.createtemporary (l_blob, FALSE); BEGIN
LOOPUTL_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_bodyTHEN
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 18
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 19
PDF Erstellung mit APEX Dietmar Aust
Integration I – externe Berichte Demo der Integration und der vereinfachten API
Demo
Seite 20
PDF Erstellung mit APEX Dietmar Aust
Integration II – XML FeedÜbersicht
„echter“ Ersatz des BI-Publishers
Kommunikation APEX BI-Publisher:XML – Feed der DatenBerichtsdefinition als RTF-Template
BI-Publisher werden die Daten mit dem Template verbunden und im gewünschten Format zurückgeliefert
Seite 21
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 22
PDF Erstellung mit APEX Dietmar Aust
Integration II – XML Feed Demo
Demo
Seite 23
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 umzusetzenJava Servlet Programmierung notwendig
RTF Export nicht optimalTextfelder / Positionsrahmen nicht einfach zu editierenKeine Ränder im Dokument
Seite 24
PDF Erstellung mit APEX Dietmar Aust
APEX Training - Ankündigung
Oracle APEX: Knowhow aus der Praxis! 23.03 – 25.03.2009 in Bensheimhttp://www.opal-consulting.de/trainingDozenten:
− 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 25
PDF Erstellung mit APEX Dietmar Aust
Kontakt
Opal-Consulting Dietmar AustWeb: http://www.opal-consulting.deBlog: http://daust.blogspot.com/E-Mail: [email protected]