java - Internet Explorer 中的 PDF 导出打印

标签 java javascript pdf browser jasper-reports

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(通过 exporter.setParameterthis.print() 的不同参数) -我尝试设置不同的响应 header ,例如

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);")

关于java - Internet Explorer 中的 PDF 导出打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13313165/

相关文章:

django - 在 EmailMultiAlternatives 中, Attach 和 Attach_alternative 两者同时不起作用

java - 想在 jhipster 中添加 New Bean

java - cucumber 选项(命令行)不再适用于较新版本的 cucumber (io.cucumber)?

javascript - 返回较大字符串中特定字符串之前第一次出现的时间正则表达式

java - 如何从url获取pdf到java代码中?

php - 使用 EZPDF 通过 PHP 从 Mysql 导出时如何使表响应

java - 使用lucene 4删除文档并检索已删除文档的所有docId

java - `Rectangle2D.Double` 如何知道它应该在对 `JOptionPane` 的调用中显示在 `paintIcon()` 内?

Javascript 二维码读取库

javascript - 在 React JS 中获取多数组中的 JSON 数据时出错?