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文檔。在Internet Explorer中PDF導出打印
線
exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT,
"this.print({bUI: true,bSilent: false,bShrinkToFit: true});");
增加了JavaScript以PDF文檔直接發送到打印機。
預期的行爲是一個打印對話框將拿出PDF文檔的預覽。
也能正常工作的大部分時間 - 除了我有在Internet Explorer 8和Firefox大約一個問題,每5-6倍。
會發生什麼事是 - 打印預覽對話框,PDF文檔不出現或將其與在預覽窗口中的空白文檔出現。
-I've嘗試了一些不同的JavaScript的(不同PARAMS到this.print()
通過exporter.setParameter
-I've嘗試設置不同的響應頭,比如
response.setContentType("application/pdf");
response.setHeader("Content-disposition","inline; filename=\""
+ reportName
+ "\"");
response.setContentLength(baos.size());
這些似乎並沒有幫助
這似乎是一個IE和FF問題,有沒有人處理過這個問題?我需要讓它在100%的時間內在所有瀏覽器上工作。也許一種完成將PDF文檔直接導出到目標的不同方法打印機?還是可以跨瀏覽器工作的第三方庫?
您可以在Acrobat中閱讀該文檔嗎? –
是的,如果我們註釋掉exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, 「this.print({BUI:真,bSilent:假的,bShrinkToFit:真});」);那麼我們可以下載該文件作爲pdf附件。這適用於所有瀏覽器。 – user619804
這是什麼rif軟件?它是否與碧玉報告一起工作,還是碧玉的替代品? – user619804