PDF Erstellung mit APEX - eine kostenlose Alternative · PDF Erstellung mit APEX Dietmar Aust...

Preview:

Citation preview

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: dietmar.aust@opal-consulting.de

Recommended