如何使用Java独立程序将Crystal Report导出为PDF

2020-09-09 01:54发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


问题:我可以使用Java独立程序(而不使用Web应用程序或服务器)将Crystal报表导出为pdf。

要求:我想使用独立的Java应用程序将Crystal报表导出为pdf文件。 我可以在桌面上使用SAP Crystal Report 2013做到这一点。 对于Java,我已经下载了crjava-runtime_12.2.220库并使用以下代码。

导入com.crystaldecisions.reports.sdk。*;
 导入com.crystaldecisions.sdk.occa.report.lib。*;
 导入com.crystaldecisions.sdk.occa.report.exportoptions。*;
//Java导入。
 导入java.io. *;
 公共类JRCExportReport {
 静态最终字符串REPORT_NAME =" C:/abc.rpt";
 静态最终字符串EXPORT_FILE =" C:/abc.pdf";

 公共静态void main(String [] args){
 尝试{
//打开报告。
 ReportClientDocument reportClientDoc = new ReportClientDocument();
 reportClientDoc.open(REPORT_NAME,ReportExportFormat._PDF);

///注意:如果需要参数或数据库登录凭据,则需要先进行设置。
//调用PrintOutputController的export()方法。

//导出报告并获取可以写入磁盘的输入流。
//有关受支持的导出格式枚举的更多信息,请参见《 Java Reporting Component开发人员指南》
//与JRC一起使用。
 ByteArrayInputStream byteArrayInputStream =(ByteArrayInputStream)reportClientDoc.getPrintOutputController()。export(ReportExportFormat.PDF);

//发布报告。
 reportClientDoc.close();

//使用Java I/O库将导出的内容写入文件系统。
 byte byteArray [] = new byte [byteArrayInputStream.available()];
//创建一个包含导出结果的新文件。
 文件文件=新文件(EXPORT_FILE);
 FileOutputStream fileOutputStream =新的FileOutputStream(file);
 ByteArrayOutputStream byteArrayOutputStream =新的ByteArrayOutputStream(byteArrayInputStream.available());
 int x = byteArrayInputStream.read(byteArray,0,byteArrayInputStream.available());
 byteArrayOutputStream.write(byteArray,0,x);
 byteArrayOutputStream.writeTo(fileOutputStream);
//关闭流。
 byteArrayInputStream.close();
 byteArrayOutputStream.close();
 fileOutputStream.close();

 System.out.println("已成功将报告导出到" + EXPORT_FILE);

 }
 catch(ReportSDKException ex){

 ex.printStackTrace();

 }
 catch(Exception ex){

 ex.printStackTrace();

 }
 }
 }






 在线获取以下异常(reportClientDoc.open(REPORT_NAME,ReportExportFormat._PDF);):

 log4j:WARN找不到记录器的附加程序(com.crystaldecisions.reports.common.engine.config)。
 log4j:WARN请正确初始化log4j系统。
 com.crystaldecisions.sdk.occa.report.lib.ReportSDKException:索引:0,大小:0 ----错误代码:-2147467259错误代码名称:失败
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter。(源文件:285)
 在com.businessobjects.sdk.erom.jrc.a。(SourceFile:43)
 在com.businessobjects.sdk.erom.jrc.ReportAgentFactory.createAgent(SourceFile:46)
 在com.crystaldecisions.proxy.remoteagent.RemoteAgent $ a。(SourceFile:703)
 在com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:662)
 在com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:632)
 在com.crystaldecisions.sdk.occa.report.application.ClientDocument.if(SourceFile:504)
 在com.crystaldecisions.sdk.occa.report.application.ClientDocument.open(SourceFile:669)
 在com.crystaldecisions.reports.sdk.ReportClientDocument.open(SourceFile:80)
 在JRCExportReport.main(JRCExportReport.java:33)
 引起原因:java.lang.IndexOutOfBoundsException:索引:0,大小:0
 在java.util.ArrayList.rangeCheck(未知来源)
 在java.util.ArrayList.get(未知来源)
 在com.crystaldecisions12.reports.dataengine.h.if(SourceFile:2219)
 在com.crystaldecisions12.reports.dataengine.h.i(SourceFile:255)
 在com.crystaldecisions12.reports.dataengine.h.a(SourceFile:2065)
 在com.crystaldecisions12.reports.dataengine.h.try(SourceFile:1878)
 在com.crystaldecisions12.reports.reportdefinition.ReportDocument.a(SourceFile:2378)
 在com.crystaldecisions12.reports.reportdefinition.ReportDocument.a(SourceFile:1716)
 在com.crystaldecisions12.reports.common.Document.a(SourceFile:689)
 在com.crystaldecisions12.reports.common.Document.do(SourceFile:651)
 在com.crystaldecisions12.reports.reportdefinition.ReportDocument.a(SourceFile:2325)
 在com.crystaldecisions12.reports.reportdefinition.ReportDocument.a(SourceFile:1716)
 在com.crystaldecisions12.reports.common.Document.a(SourceFile:521)
 在com.crystaldecisions12.reports.common.Document.loadDocument(SourceFile:437)
 在com.crystaldecisions12.reports.reportdefinition.ReportDocument.loadDocument(SourceFile:1516)
 在com.crystaldecisions12.reports.reportdefinition.ReportDocument.LoadDocument(SourceFile:1479)
 在com.businessobjects.reports.reportconverter.v12.c.a(SourceFile:59)
 在com.businessobjects.reports.reportconverter.v12.V12SaveLoader.a(SourceFile:159)
 在com.businessobjects.reports.loader.ReportLoader.a(SourceFile:205)
 在com.businessobjects.reports.sdk.JRCReportLoader.a(SourceFile:137)
 在com.businessobjects.reports.sdk.JRCReportLoader.a(SourceFile:76)
 在com.businessobjects.reports.sdk.requesthandler.ReportDocumentRequestHandler.a(SourceFile:137)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter。(源文件:228)
 ...另外9个


 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


问题:我可以使用Java独立程序(而不使用Web应用程序或服务器)将Crystal报表导出为pdf。

要求:我想使用独立的Java应用程序将Crystal报表导出为pdf文件。 我可以在桌面上使用SAP Crystal Report 2013做到这一点。 对于Java,我已经下载了crjava-runtime_12.2.220库并使用以下代码。

导入com.crystaldecisions.reports.sdk。*;
 导入com.crystaldecisions.sdk.occa.report.lib。*;
 导入com.crystaldecisions.sdk.occa.report.exportoptions。*;
//Java导入。
 导入java.io. *;
 公共类JRCExportReport {
 静态最终字符串REPORT_NAME =" C:/abc.rpt";
 静态最终字符串EXPORT_FILE =" C:/abc.pdf";

 公共静态void main(String [] args){
 尝试{
//打开报告。
 ReportClientDocument reportClientDoc = new ReportClientDocument();
 reportClientDoc.open(REPORT_NAME,ReportExportFormat._PDF);

///注意:如果需要参数或数据库登录凭据,则需要先进行设置。
//调用PrintOutputController的export()方法。

//导出报告并获取可以写入磁盘的输入流。
//有关受支持的导出格式枚举的更多信息,请参见《 Java Reporting Component开发人员指南》
//与JRC一起使用。
 ByteArrayInputStream byteArrayInputStream =(ByteArrayInputStream)reportClientDoc.getPrintOutputController()。export(ReportExportFormat.PDF);

//发布报告。
 reportClientDoc.close();

//使用Java I/O库将导出的内容写入文件系统。
 byte byteArray [] = new byte [byteArrayInputStream.available()];
//创建一个包含导出结果的新文件。
 文件文件=新文件(EXPORT_FILE);
 FileOutputStream fileOutputStream =新的FileOutputStream(file);
 ByteArrayOutputStream byteArrayOutputStream =新的ByteArrayOutputStream(byteArrayInputStream.available());
 int x = byteArrayInputStream.read(byteArray,0,byteArrayInputStream.available());
 byteArrayOutputStream.write(byteArray,0,x);
 byteArrayOutputStream.writeTo(fileOutputStream);
//关闭流。
 byteArrayInputStream.close();
 byteArrayOutputStream.close();
 fileOutputStream.close();

 System.out.println("已成功将报告导出到" + EXPORT_FILE);

 }
 catch(ReportSDKException ex){

 ex.printStackTrace();

 }
 catch(Exception ex){

 ex.printStackTrace();

 }
 }
 }






 在线获取以下异常(reportClientDoc.open(REPORT_NAME,ReportExportFormat._PDF);):

 log4j:WARN找不到记录器的附加程序(com.crystaldecisions.reports.common.engine.config)。
 log4j:WARN请正确初始化log4j系统。
 com.crystaldecisions.sdk.occa.report.lib.ReportSDKException:索引:0,大小:0 ----错误代码:-2147467259错误代码名称:失败
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter。(源文件:285)
 在com.businessobjects.sdk.erom.jrc.a。(SourceFile:43)
 在com.businessobjects.sdk.erom.jrc.ReportAgentFactory.createAgent(SourceFile:46)
 在com.crystaldecisions.proxy.remoteagent.RemoteAgent $ a。(SourceFile:703)
 在com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:662)
 在com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:632)
 在com.crystaldecisions.sdk.occa.report.application.ClientDocument.if(SourceFile:504)
 在com.crystaldecisions.sdk.occa.report.application.ClientDocument.open(SourceFile:669)
 在com.crystaldecisions.reports.sdk.ReportClientDocument.open(SourceFile:80)
 在JRCExportReport.main(JRCExportReport.java:33)
 引起原因:java.lang.IndexOutOfBoundsException:索引:0,大小:0
 在java.util.ArrayList.rangeCheck(未知来源)
 在java.util.ArrayList.get(未知来源)
 在com.crystaldecisions12.reports.dataengine.h.if(SourceFile:2219)
 在com.crystaldecisions12.reports.dataengine.h.i(SourceFile:255)
 在com.crystaldecisions12.reports.dataengine.h.a(SourceFile:2065)
 在com.crystaldecisions12.reports.dataengine.h.try(SourceFile:1878)
 在com.crystaldecisions12.reports.reportdefinition.ReportDocument.a(SourceFile:2378)
 在com.crystaldecisions12.reports.reportdefinition.ReportDocument.a(SourceFile:1716)
 在com.crystaldecisions12.reports.common.Document.a(SourceFile:689)
 在com.crystaldecisions12.reports.common.Document.do(SourceFile:651)
 在com.crystaldecisions12.reports.reportdefinition.ReportDocument.a(SourceFile:2325)
 在com.crystaldecisions12.reports.reportdefinition.ReportDocument.a(SourceFile:1716)
 在com.crystaldecisions12.reports.common.Document.a(SourceFile:521)
 在com.crystaldecisions12.reports.common.Document.loadDocument(SourceFile:437)
 在com.crystaldecisions12.reports.reportdefinition.ReportDocument.loadDocument(SourceFile:1516)
 在com.crystaldecisions12.reports.reportdefinition.ReportDocument.LoadDocument(SourceFile:1479)
 在com.businessobjects.reports.reportconverter.v12.c.a(SourceFile:59)
 在com.businessobjects.reports.reportconverter.v12.V12SaveLoader.a(SourceFile:159)
 在com.businessobjects.reports.loader.ReportLoader.a(SourceFile:205)
 在com.businessobjects.reports.sdk.JRCReportLoader.a(SourceFile:137)
 在com.businessobjects.reports.sdk.JRCReportLoader.a(SourceFile:76)
 在com.businessobjects.reports.sdk.requesthandler.ReportDocumentRequestHandler.a(SourceFile:137)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter。(源文件:228)
 ...另外9个


 
付费偷看设置
发送
2条回答
当学会了学习
1楼-- · 2020-09-09 02:39

一周热门 更多>