繁体   English   中英

使用Java打印SAP Crystal Reports

[英]Printing SAP Crystal Reports using Java

我正在尝试使用基于此示例的Crystal Report API打印报表。

reportClientDoc.open(reportpath+reportName, 0);
//Create and set print options.
PrintReportOptions printOptions = new PrintReportOptions();
printOptions.setPrinterName(printerName); //Note: Printer 'printername' must already be configured at Operating system level.
printOptions.setJobTitle(reportName); // job title by the report file name
printOptions.setPrinterDuplex(PrinterDuplex.simplex);
printOptions.setPaperSource(PaperSource.auto);
printOptions.setPaperSize(PaperSize.paperA4);
printOptions.setNumberOfCopies(1);
printOptions.setCollated(false);
reportClientDoc.getPrintOutputController().printReport(printOptions);

但是我无法正常工作,我收到了java.util.concurrent.CancellationException

java.util.concurrent.CancellationException
    at com.businessobjects.crystalreports.printer.bean.Printer.X(Unknown Source)
    at com.businessobjects.crystalreports.printer.bean.ReportPrinter.print(Unknown Source)
    at com.businessobjects.crystalreports.printer.bean.ReportPrinter.print(Unknown Source)
    at com.crystaldecisions.sdk.occa.report.application.PrintOutputController.printReport(SourceFile:742)
    at my.test.crystal.GenerateReport.doGet(GenerateReport.java:108)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.awt.print.PrinterAbortException
    at com.businessobjects.crystalreports.viewer.core.ReportPagePrinter.print(Unknown Source)
    at sun.print.RasterPrinterJob.printPage(RasterPrinterJob.java:1936)
    at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1431)
    at com.businessobjects.crystalreports.viewer.core.ReportPagePrinter.print(Unknown Source)

十分奇怪的是,该示例以前在另一个项目中工作,但不再在我的本地环境中使用! 我可能改变了一些东西,但我无法弄明白:(

我尝试使用多台打印机(本地和网络),但情况始终相同:我可以在很短的时间内看到打印机作业列表中的作业,但是不到1秒后,该作业消失了,并且收到异常消息。

我正在使用Tomcat 7,我尝试使用JDK1.6和1.7(考虑JDK问题?)但是没有变化。

如果有人可以给我一些线索,因为目前,我完全陷入困境。 谢谢

确保将ReportViewer.jar添加到库中。 对于代码完成,这似乎不是必需的,但它是用于打印的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM