使用Java打印SAP Crystal报表

使用Java打印SAP Crystal报表,java,printing,crystal-reports,Java,Printing,Crystal Reports,基于此,我正在尝试使用Crystal Report API打印报告 但我无法让它工作,我收到一个java.util.concurrent.CancellationException: 非常奇怪的是,这个例子以前在另一个项目中使用过,但现在不再在我的本地环境中使用了!我可能改变了一些东西,但我不知道是什么: 我尝试了几台本地和网络打印机,但情况总是一样的:我可以在打印机作业列表中很短的时间内看到作业,但不到1秒后,它消失了,我收到了异常 我正在使用Tomcat7,我尝试使用JDK1.6和1.7来考

基于此,我正在尝试使用Crystal Report API打印报告

但我无法让它工作,我收到一个java.util.concurrent.CancellationException:

非常奇怪的是,这个例子以前在另一个项目中使用过,但现在不再在我的本地环境中使用了!我可能改变了一些东西,但我不知道是什么:

我尝试了几台本地和网络打印机,但情况总是一样的:我可以在打印机作业列表中很短的时间内看到作业,但不到1秒后,它消失了,我收到了异常

我正在使用Tomcat7,我尝试使用JDK1.6和1.7来考虑JDK的问题?但是没有变化

如果有人能给我一些线索,因为目前,我完全卡住了。
Thx

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

感谢您的输入,但我不知道在哪里可以找到谷歌没有帮助的jar。无论如何,我不再从事这个项目了,在没有回答这个问题的情况下,我最终不得不使用Unix命令“lp”来管理打印:-/
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
    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)