簡體   English   中英

在Internet Explorer中PDF導出打印

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM