首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Internet Explorer中的PDF导出打印

Internet Explorer中的PDF导出打印
EN

Stack Overflow用户
提问于 2012-11-10 01:40:21
回答 1查看 3K关注 0票数 6
代码语言:javascript
复制
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文档。

这条线

代码语言:javascript
复制
exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, 
             "this.print({bUI: true,bSilent: false,bShrinkToFit: true});");

添加JavaScript以将PDF文档直接发送到打印机。

预期的行为是,打印对话框将显示PDF文档的预览。

这在大多数情况下都工作得很好--除了我在I 8和Firefox中每5-6次就会遇到一个问题。

发生的情况是- PDF文档的打印预览对话框不显示,或者在预览窗口中显示空白文档。

-我尝试了许多不同的JavaScripts (通过exporter.setParameter设置this.print()的不同参数-我尝试设置不同的响应头,例如

代码语言:javascript
复制
response.setContentType("application/pdf");
response.setHeader("Content-disposition","inline;  filename=\"" 
                   + reportName 
                   + "\"");
response.setContentLength(baos.size());

这些似乎都没有帮助。

这似乎是IE和FF的问题。有没有人处理过这个问题?我需要让它在所有浏览器100%的时候都能工作。也许有一种不同的方法来实现将PDF文档导出直接发送到打印机的目标?或者是可以跨浏览器工作的第三方库?

EN

回答 1

Stack Overflow用户

发布于 2012-11-21 02:26:53

也许它没有机会更新UI。下面的代码延迟打印,可能会给它所需的机会。我没有测试,因为我没有你的环境。

代码语言:javascript
复制
exporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT,
    "app.setTimeOut('this.print({bUI: true,bSilent: false,bShrinkToFit: true});',200);")
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13313165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档