Tuesday, June 07, 2016

Export your APEX Interactive Report to PDF

Interactive Reports (and Grids in 5.1) are one of the nicest features of Oracle Application Express (APEX) as it allows an end-user to look at the data the way they want, without needing a developer to change the underlying code. End-users can show or hide columns, do calculations on columns, filter etc.

Here's an example of an interactive report where highlighting, computation and aggregation is used.


More than once I get the question, how can I export this to PDF or print this Interactive Report?

Here're 3 ways of doing this:

1. Use your browser to Print to PDF

The challenge here's that you would need to add some specific CSS to get rid of the items you don't want to be printed, e.g. the menu, the header and footer and some other components like buttons.
Also if you have many columns, they might not fit on the page and the highlighting is not working when printed, but if you can live with that, it might be an option for you.


Here's the CSS you can use:

@media print {

  .t-Body-nav {
    display:none
  }
}


2. Use the download feature of the Interactive Report itself (Actions > Download > PDF)

This feature is build-in APEX and relies on a print server supporting XSL-FO; when using ORDS it will automatically work. If you're using Apache, you will need to configure a print server like BI Publisher or Apache-FOP.


When downloading to PDF, the result looks like this:

The PDF contains the data and we can specify a header, footer and how the columns look like, but we lost many features of the Interactive Report; no highlighting, no computation or aggregation.


3. Use APEX Office Print to print the Interactive Report in your own template defined in MS Word.

One of the unique features of APEX Office Print is that it's tightly integrated with Oracle Application Express and that it understands Interactive Reports as the source of your data.

Here're the steps:

- Create your template in MS Word and add {&interactive} tag where you want the Interactive Report to be


- Give your Interactive Report a static id:



- Add the APEX Office Print Process Plugin to your page and specify the template and the static id: 


And here's the result: 


I'm biased as we created APEX Office Print (AOP), but I just find it awesome :)
In your Word template you just add one tag, that's it!

In all seriousness, we would really want to hear from you if this feature works for your Interactive Report. You can try AOP for free for 100 days. We're trying to be smart and are doing automatic calculations of the column width, but we probably can improve it even more. We introduced this feature with AOP v2.0 (MAR-16) and improved it in v2.1 (MAY-16).

18 comments:

Lvs. Rajakumar said...

Thanks for Information.

I have a question in this topic: Does APEX have a limit column for PDF files?
For suppose if i have more than 10 columns in pdf report , report shows error message.
Some times data looks merged with other columns it is not showing properly.
But in crystal reports, it is showing good.

Dimitri Gielis said...

Hi Raj sai,

Which option did you go with to produce your PDF and in which you have issues?
The standard APEX PDF export?

Thanks,
Dimitri

Unknown said...

Hi Dimitri,

I have a interactive report having more than 40 column and it errors out but when i change to 10 columns or so its works fine.

In the manage instance setting for PDF printing its currently setup as " APEX Listener".

Can you please share you feedback?

Thanks
Shubhadeep

Unknown said...

Hi Dimitri,

I am too facing the same situation if i try printing a IR in PDF having more than 40 columns errors out in PDF but CSV/HTML works fine.

Current settings in Manage Instance Settings in Admin is set to "APEX Listener" for PDF printing to enable PDF priting.

Can you please confirm?

Thanks
Shubhadeep

Praveen Chaudhary said...

Hi Dimitri,

Please suggest on this .
Is this a APEX limitation .
I am unable to download PDF reports which are having more that 25 columns

Dimitri Gielis said...

Hi Praveen,

It looks like APEX default reporting has a limit.
APEX Office Print should work fine with more columns.

Hope that helps,
Dimitri

Praveen Chaudhary said...

Hi Dimitri,

One more question I want to add my company logo in header of PDF downloaded file . How can I achieve this?
Please specify Steps in detail . It one of my urgent requirement.
I am a newbie.. :(

Thank you

Dimitri Gielis said...

Hi Praveen,

You mean with APEX Office Print?
You would include your logo in your Word or Excel template.

Hope that helps,
Dimitri

Praveen Chaudhary said...

Hi Dimitri,

Will APEX Office Print will customize the PDF report layout?

Unknown said...
This comment has been removed by the author.
Unknown said...

Hi Dimitri,

i try to print pdf using ords.3.0.6.176.08.46 running in apache tomcat. but all generated pdfs contain only one string :String index out of range
Any idea what i miss in the configuration of tomcat and/or the apex instance?

Trevis said...

Hey Dimitri,

I've tried to look into it but I got an error when I ran install.sql:

SQL> @install.sql

Package created.


Warning: Package Body created with compilation errors.


Package created.


Package body created.


Table created.


Table created.


Table created.


Trigger created.


Trigger created.


Trigger created.


1 row created.


1 row created.


1 row created.


Commit complete.


1 row created.


1 row created.


1 row created.


1 row created.


1 row created.


Commit complete.


5 rows updated.


Commit complete.

( "ID" NUMBER GENERATED ALWAYS AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOT NULL ENABLE,
*
ERROR at line 2:
ORA-02000: missing ( keyword


on aop_user_test for each row begin
*
ERROR at line 3:
ORA-00942: table or view does not exist



Package created.


Package body created.


Package created.


Package body created.


Session altered.


Warning: Package altered with compilation errors.


Package altered.

SQL>

Trevis said...

Ah, after fixing some grants on utl_http I still get error :-(

Error while generating file. Please contact AOP for further inquiry.

Dimitri Gielis said...

Hi Trevis,

We used a feature of 12c (GENERATED ALWAYS AS IDENTITY) in our script to create a table in AOP v2.4.
This has already been fixed in AOP v2.5. The table in itself is only used by one page in the sample app and not really necessary.

If you enable remote support (Shared Component > Component Settings > APEX Office Print) and hit the sent to Support button, we are happy to help or you can contact support@ directly too.

Thanks,
Dimitri

Ashish said...

I am trying to use the print to csv/pdf option on an IR in APEX 5, and the IR is on a modal window, however when I click on Download CSV/PDF, it downloads the corresponding CSV/PDF and also tries to reload the same modal page in a new window which is an issue. Can you please suggest?

Thanks in advance!

Sindhu said...

Ir report is not allowing me to download 21k rows with 4 columns. But when i filter with one column, report is getting downloaded which has approx 20k records . I don't know why the total records 21k report csv is not downloading but report with 20 k is downloaded. Please help

Dimitri Gielis said...

AOP should not have a limit to export rows.

If you run in AOP Local debug mode you should get a JSON. Do you see all data in there?

Lvs. Rajakumar said...

Ok thanks