首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >直接从JavaScript打印PDF

直接从JavaScript打印PDF
EN

Stack Overflow用户
提问于 2013-04-26 23:00:13
回答 6查看 333.9K关注 0票数 107

我正在建立一个HTML格式的PDF列表。在列表中,我想包括一个下载链接和一个打印按钮/链接。有没有什么方法可以直接打开PDF的打印对话框,而不需要用户看到PDF或打开PDF查看器?

将PDF下载到隐藏的iframe中并使用JavaScript触发它打印的一些变体?

EN

回答 6

Stack Overflow用户

发布于 2014-03-28 01:42:20

这是一个从iframe打印PDF的函数。

您只需将PDF的URL传递给函数即可。它将创建一个iframe,并在加载PDF后触发打印。

请注意,该函数不会销毁iframe。相反,它会在每次调用函数时重用它。很难销毁iframe,因为在打印完成之前需要它,而print方法没有回调支持(据我所知)。

代码语言:javascript
复制
printPdf = function (url) {
  var iframe = this._printIframe;
  if (!this._printIframe) {
    iframe = this._printIframe = document.createElement('iframe');
    document.body.appendChild(iframe);

    iframe.style.display = 'none';
    iframe.onload = function() {
      setTimeout(function() {
        iframe.focus();
        iframe.contentWindow.print();
      }, 1);
    };
  }

  iframe.src = url;
}
票数 48
EN

Stack Overflow用户

发布于 2017-06-02 10:58:36

您可以使用Print.js (npm install print-js)。它是128kB的,你可以在http://printjs.crabbly.com/上找到文档。

但它不能在IE上打印,在这种情况下,你必须下载PDF来代替。

代码语言:javascript
复制
$http({
    url: "",
    method: "GET",
    headers: {
        "Content-type": "application/pdf"
    },
    responseType: "arraybuffer"
}).success(function (data, status, headers, config) {
    var pdfFile = new Blob([data], {
        type: "application/pdf"
    });
    var pdfUrl = URL.createObjectURL(pdfFile);
    //window.open(pdfUrl);
    printJS(pdfUrl);
    //var printwWindow = $window.open(pdfUrl);
    //printwWindow.print();
}).error(function (data, status, headers, config) {
    alert("Sorry, something went wrong")
});
票数 24
EN

Stack Overflow用户

发布于 2013-04-26 23:04:51

https://github.com/mozilla/pdf.js/

用于现场演示http://mozilla.github.io/pdf.js/

这可能是你想要的,但我看不出这一点,因为现代浏览器包括这样的功能,而且它在低功耗设备上运行会非常慢,比如移动设备,顺便说一句,有自己优化的插件和应用程序。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16239513

复制
相关文章

相似问题

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