[英]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.