protected static byte[] exportReportToPdf(JasperPrint jasperPrint)
throws JRException {
JRPdfExporter exporter = new JRPdfExporter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT,
"this.print({bUI: true,bSilent: false,bShrinkToFit: true});");
exporter.exportReport();
return baos.toByteArray();
}
我们正在使用这样的代码从 Jasper 应用程序中导出 PDF 文档。
线
exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT,
"this.print({bUI: true,bSilent: false,bShrinkToFit: true});");
添加 JavaScript 以将 PDF 文档直接发送到打印机。
预期的行为是打印对话框将显示 PDF 文档的预览。
这在大多数情况下都可以正常工作 - 除了我在 Internet Explorer 8 和 Firefox 中每 5-6 次遇到问题。
发生的情况是 - 带有 PDF 文档的打印预览对话框没有出现,或者在预览窗口中出现空白文档。
-我尝试了许多不同的 JavaScript(不同的参数this.print()
通过-exporter.setParameter
我尝试设置不同的响应标头,例如
response.setContentType("application/pdf");
response.setHeader("Content-disposition","inline; filename=\""
+ reportName
+ "\"");
response.setContentLength(baos.size());
这些似乎没有帮助
这似乎是一个 IE 和 FF 问题。有没有人处理过这个问题?我需要让它 100% 地在所有浏览器上工作。实现将 PDF 文档导出直接发送到打印机的目标可能是另一种方法?还是可以跨浏览器工作的第三方库?