![](/img/trans.png)
[英]PDF created on HTTP request won't open in Internet Explorer
[英]PDF export printing in Internet Explorer
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文档的打印预览对话框没有出现,或者在预览窗口中显示空白文档。
- 我尝试了很多不同的JavaScripts(通过exporter.setParameter
对this.print()
不同参数 - 我尝试过设置不同的响应头,比如
response.setContentType("application/pdf");
response.setHeader("Content-disposition","inline; filename=\""
+ reportName
+ "\"");
response.setContentLength(baos.size());
这些似乎没有帮助
这似乎是一个IE和FF问题。 有人曾经处理过这个问题吗? 我需要100%的时间让它在所有浏览器中运行。 也许是一种不同的方法来实现将PDF文档直接导出到打印机的目标? 或者可以跨浏览器工作的第三方库?
也许它没有机会更新UI。 以下代码延迟了打印可能给它所需的机会。 我没有测试,因为我没有你的环境。
exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT,
"app.setTimeOut('this.print({bUI: true,bSilent: false,bShrinkToFit: true});',200);")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.