PDF格式的Crossbrowser打印

时间:2016-09-30 06:48:26

标签: pdfjs

Web应用程序允许用户使用浏览器的打印对话框打印pdf文档。这些文档是使用mimetype application / pdf从服务流式传输的。在Web客户端中,创建iframe并将其附加到document.body,并为源设置返回内容的服务的uri。 框架如下:

<iframe id="printPage" name="printPage" src="/remote/api/export/resource_name" style="position: absolute; top: -1000px; width: ${opts.frameWidth}px; height: ${opts.frameHeight}px;"></iframe>

javascript中的打印执行部分就像这样

let iframe = $('the_iframe_html_above');
iframe.load(() => {
  window.frames.printPage.focus();
  window.frames.printPage.print();
});
$('body').append(iframe);

通过这种方式,打印对话框仅在Chrome和Safari浏览器下按预期打开。

  • 在Firefox下打开对话框,但打印出:空白页面,因为iframe保持为空(正文中没有内容)。当从about:config禁用pdfjs时会发生这种情况,显然这是正常的。如果它没有被禁用,则FF给出错误&#34;错误:拒绝访问属性打印的权限&#34;在mozilla的bugtracker https://bugzilla.mozilla.org/show_bug.cgi?id=911444
  • 中报告了一个3岁的bug
  • IE和Edge只是忽略我知道它是预期的onload处理程序,但即使使用内联onload处理程序,他们也无法打开打印对话框。只有IE提供保存/打开文件但不打印。

所以我的问题是:在给定这些条件的情况下,如果有一种交叉浏览器方式来执行打印操作(打开浏览器的原生打印对话框)?

0 个答案:

没有答案