Jak drukować raporty PDF z kodu PL/SQL w kilku prostych krokach?

23 lipca 2015, Mariusz Skóra

W każdej aplikacji biznesowej stworzonej w dowolnej technologii istnieje potrzeba, aby użytkownik systemu miał możliwość tworzyć raporty, które mogą być zapisane na dysku komputera lub serwera i w dowolnym momencie otwierane. Takimi raportami mogą być wyniki przeprowadzonych badań, dane statystyczne, sprawozdania, listy, noty, rachunki lub faktury VAT.

Ze względu na istniejącą potrzebę, społeczność programistów Oracle stworzyła darmowy w użyciu pakiet napisany w języku PL/SQL, który zintergrowany z dowolną aplikacją działającą na bazie Oracle, pozwala na sprawne i szybkie drukowanie plików PDF wprost z naszej aplikacji. Mowa o pakiecie jrxml2pdf, który za darmo można pobrać na stronie SourceForge. Pakiet udostępniany jest na licencji MIT i GPL.

Nazwa pakietu – jrxml2pdf – nie jest bez znaczenia. Pakiet poza wspomnianą możliwością drukowania plików PDF z aplikacji, znakomicie wspiera pliki JRXML tworzone w innym darmowym narzędziu – JasperSoft iReport Designer, udostępnianym na licencji AGPL. Program pozwala na wizualne projektowanie szablonów PDF w intuicyjnym narzędziu typu WYSIWYG. Na dzień pisania tego artykułu, ostatnią poprawnie przetestowaną przez twórcę pakietu jrxml2pdf jest wersja 4.7.0.

W tym artykule postaram się przybliżyć czytelnikowi pakiet do drukowania plików PDF z aplikacji PL/SQL na przykładzie Oracle Application Express (APEX), gdzie krótko opiszę jak go zainstalować i jak wykorzystać na przykładowym raporcie JRXML zaprojektowanym w iReport Designer. W załącznikach można odnaleźć kilka prostych przykładów wykorzystania pakietu. Wystarczy pobrać, zainstalować i testować!

Przygotowanie raportu w iReport Designer

Na co warto na początku zwrócić uwagę jest to, że domyślnie iReport nie posiada zainstalowanych sterowników do bazy danych Oracle. Po szczegóły jak skonfigurować połączenie odsyłam do strony Jaspersoft. Po zainstalowaniu sterowników i skonfigurowaniu połączenia do schematu HR, można utworzyć prosty raport w programie iReport Designer. Dla ułatwienia, przygotowałem taki raport, który jest gotowy do pobrania tutaj lub w stopce tego artykułu. Raport wyświetla listę wszystkich pracowników z tabeli EMPLOYEES w schemacie HR, domyślnie zainstalowanym w Oracle Express Edition 11g.

Jeżeli chcesz sam utworzyć raport i właśnie otworzyłeś program iReport Designer, znajdź ikonę  gdzie możesz napisać własne zapytanie SQL, które z kolei program wykona i wyświetli w formie raportu. Oczywiście możesz pominąć tą część i pobrać udostępniony plik, i otworzyć w programie iReport.

Zapytanie SQL, które wklejam do programu iReport Designer:

Instalacja pakietu jrxml2pdf

Kolejnym krokiem jest instalacja samego pakietu. Po ściągnięciu paczki, należy ją rozpakować a następnie zainstalować pakiet zgodnie z instrukcją znajdującą się w katalogu doc/. W skrócie, instalacja sprowadza się do dwóch punktów:

  1. Nadanie uprawnień do UTL_FILE użytkownikowi, na którym pakiet jrxml2pdf będzie zainstalowany (przyjmuję, że będzie to HR)
  2. Uruchomić narzędzie sqlplus w katalogu install pakietu jrxml2pdf i zainstalować pakiet z pliku install.sql

Po prawidłowym zainstalowaniu paczki, w rozwinięciu tabel i pakietów powinny pojawić się nowe obiekty, tak jak na zdjęciu poniżej:

Import raportu Jasper do bazy Oracle

Jeżeli wszystko jest gotowe i pakiet został zainstalowany poprawnie bez błędów w trakcie kompilacji, należy załadować raport utworzony w iReport Designer do jednej z nowo utworzonych tabel.

  1. Przechodzimy do programu iReport Designer, gdzie otwieramy pobrany z tej strony plik blog-report1.jrxml lub samodzielnie utworzony raport.
  2. Sprawdzamy czy raport działa poprawnie przez kliknięcie na Preview
  3. Jeżeli raport działa prawidłowo i wyświetli listę wszystkich pracowników tak jak na screenie, klikamy na zakładkę XML
  4. Kopiujemy cały kod do schowka systemowego

Następnym krokiem jest wklejenie kodu XML do tabeli JRXML_REPORT_DEFINITIONS. W tym celu po koleji należy:

  1. Uruchomić ulubione IDE (ja używam SQL Developer)
  2. Rozwinąć zakładkę Tables i kliknąć na tabelę JRXML_REPORT_DEFINITIONS.
  3. W zakładce Data należy dodać nowy rekord
    1. JRD_ID – wstawiamy kolejny wolny numer
    2. JRD_NAME – ważna kolumna, gdzie ustawiamy nazwę raportu (bez znaków specjalnych, lokalnych i bez spacji); ja wpisuję blog-report1
    3. JRD_DESCRIPTION – to może pozostać puste (null)
    4. JRD_XML – tutaj wkleić kod XML, skopiowany wcześniej z programu iReport Designer
  4. Zapisać zmiany, klikając przycisk Commit 

Podłączenie pod aplikację APEX

Jeżeli kod XML został zaimportowany poprawnie do tabeli JRXML_REPORT_DEFINITIONS, teraz przejdźmy do stworzenia prostego raportu w Oracle Application Express 5.0 (APEX 5.0). Dla uproszczenia udostępniam gotową do zaimportowania aplikację APEX dostępną do pobrania tutaj lub w stopce tej strony.

Można również samodzielnie przygotować proces. Zwróćmy uwagę, że kod działa poprawnie na schemacie HR, bo tam zainstalowano pakiet jrxml2pdf. Jeżeli Twoja aplikacja APEX działa na innym schemacie w bazie Oracle, nadaj uprawnienia do wykonywania do pakietów jrxml2pdf.

Kod procesu udostępniam poniżej:

Jeżeli import powiódł się bez problemu, można uruchomić aplikację przez kliknięcie ikony Run Application.

Teraz po kliknięciu przycisku  otworzy się raport PDF taki jak poprzednio w iReport Designer.

Podsumowanie

Pakiet do drukowania plików PDF – jrxml2pdf – to znakomite i przy tym darmowe narzędzie przygotowane przez programistę Andreas Weiden. Umożliwia drukowanie raportów PDF w dowolnej aplikacji działającej na bazie danych Oracle. Użytkownik taki raport może wyświetlić wprost na przeglądarkę i zapisać w dowolnym miejscu na swoim komputerze. Programista PL/SQL ma możliwość w swoich programach wywoływać procedurę odpowiadającą za generowanie plików PDF i zapisać je w wybranej lokalizacji na serwerze.

W załączniku przykłady-jrxml-apex można znaleźć kilka przykładów wykorzystania pakietu jrxml2pdf oraz aplikacji APEX na schemacie HR. Wystarczy pobrać plik, rozpakować i zaimportować. Szczegóły w plikach README.txt oraz README.pdf.

 

Załączniki

APEX5-przykładowa_aplikacja

iReport_Designer-przykładowy_raport

przykłady-jrxml-apex

Tagi: , , , , , , , , , , ,

Zapraszamy do kontaktu!

Pretius jest firmą tworząca oprogramowanie wspierające biznes.
Tworzymy aplikacje webowe wykorzystując: Java, Oracle DB, Oracle Apex, AngularJS.
Skontaktuj się z nami, aby porozmawiać o tym jak możemy pomóc w realizacji Twojego projektu!