Export Crystal reports to PDF in java

24,788

Solution 1

I've documented my spike test for the SAP Crystal Reports for Java runtime components – Java Reporting Component (JRC) here:

http://www.javathinking.com/2011/09/using-crystal-reports-java-api-to.html

I was using Business Objects 4.0, and probably the most important thing was to get the Java library – download ‘SAP Crystal Reports for Java runtime components – Java Reporting Component (JRC)’ from:

http://www.businessobjects.com/campaigns/forms/downloads/crystal/eclipse/datasave.asp

There are a lot of samples on the web to look at – you might find something to help here: http://wiki.sdn.sap.com/wiki/display/BOBJ/Java+Reporting+Component++SDK+Samples

A good example to start with is “JRC EXPORT REPORT”: http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/40d580ce-bd66-2b10-95b0-cc4d3f2dcaef

In my case I didn't need a server - I just used the JAR files, the RPT file, the database and my CRConfig.xml file:

<?xml version="1.0" encoding="utf-8"?>
<CrystalReportEngine-configuration>
    <reportlocation>..</reportlocation>
    <timeout>0</timeout>
    <ExternalFunctionLibraryClassNames>
        <classname></classname>
    </ExternalFunctionLibraryClassNames>
</CrystalReportEngine-configuration>

Solution 2

This is more for an automated process.

First get the raw byte export from the crystal:

 ReportClientDocument reportClientDoc = new ReportClientDocument();
    reportClientDoc.open(sourceReportFile, OpenReportOptions._openAsReadOnly);

    ByteArrayInputStream byteArrayInputStream = (ByteArrayInputStream) reportClientDoc.getPrintOutputController().export(ReportExportFormat.PDF);

    //Release report.
    reportClientDoc.close();

Then Create a new file that will contain the exported result.

    File file = new File(exportedFileName);

    FileOutputStream fileOutputStream = new FileOutputStream(file);

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(byteArrayInputStream.available());
    int x = byteArrayInputStream.read(byteArray, 0, byteArrayInputStream.available());

    byteArrayOutputStream.write(byteArray, 0, x);
    byteArrayOutputStream.writeTo(fileOutputStream);

    //Close streams.
    byteArrayInputStream.close();
    byteArrayOutputStream.close();
    fileOutputStream.close();
Share:
24,788
ikvenu2000
Author by

ikvenu2000

Updated on July 29, 2020

Comments

  • ikvenu2000
    ikvenu2000 over 3 years

    Can anyone guide me on how to export crystal reports into PDF in java?

    I am using Crystal Report Server XI.

    Thanks in advance.