ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
JRPdfExporter pdfExporter = new JRPdfExporter();
pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jp);
pdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, byteArrayOutputStream);
if (isPrint) {
pdfExporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, "this.print();");
}
try {
pdfExporter.exportReport();
} catch (JRException e) {
log.error("Exception exporting pdf report");
throw new PrintExportException(e);
}
return byteArrayOutputStream;
这是使用 JRPdfExporter 返回pdf文档的 Java 方法的片段 - 除了问题之外,它在所有浏览器中都能正常工作使用 IE 和 FF 。如果要将文档直接发送到打印机,if (isPrint)
语句会设置打印文档的 JavaScript ,而不是将其呈现以供下载。
在 IE 和 FF 中 - 也许20次中的一次不起作用。打印预览对话框不会出现。之后,我可以尝试再次生成文档,它可以工作,所以这似乎是一个间歇性的问题。没有控制台错误。
此代码中有任何问题吗?我无法确定它。