Thursday, 20 August 2009

Export Crystal Report to PDF by using Java Program


Here I am using some crystal report which will connect to database and fetch the data to create report.
It will expect username and password from the calling function.
Also it will expect some parameter(Name) from the calling function. Below is the code
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Date;
import com.crystaldecisions.sdk.occa.report.application.ReportClientDocument;
import com.crystaldecisions.*;
import com.crystaldecisions.sdk.occa.report.data.Connections;
import com.crystaldecisions.sdk.occa.report.data.Fields;
import com.crystaldecisions.sdk.occa.report.data.IConnection;
import com.crystaldecisions.sdk.occa.report.data.ParameterField;
import com.crystaldecisions.sdk.occa.report.exportoptions.ReportExportFormat;
public class ReportExport {
public static void main(String[] args) {
try {
String report_name = “D://path/crystalReportName.rpt”;
String exportFileName = “D://path/outputFileName.pdf”;
ReportClientDocument clientDoc =  new ReportClientDocument();
clientDoc.open(report_name, ReportExportFormat._PDF);
//Connecting Database through crystal report
clientDoc.getDatabaseController().logon(“user_name”, “password”);
//Passing Parameter(Name) to Crystal Report
clientDoc.getDataDefController().getParameterFieldController().setCurrentValue(“”, “Name”,”anand”);
//Writing into PDF file
ByteArrayInputStream bais = (ByteArrayInputStream) clientDoc.getPrintOutputController().export(ReportExportFormat.PDF);
int size = bais.available();
byte[] barray = new byte[size];
FileOutputStream fos = new FileOutputStream(new File(exportFileName));
ByteArrayOutputStream baos = new ByteArrayOutputStream(size);
int bytes = bais.read(barray, 0, size);
baos.write(barray, 0, bytes);
baos.writeTo(fos);
clientDoc.close();
bais.close();
baos.close();
fos.close();
dbConn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

No comments:

Post a Comment