直接从JavaScript打印PDF
我正在build立HTML的PDF列表。 在列表中,我想包括下载链接和打印button/链接。 有没有一些方法可以直接打开PDF的打印对话框,而无需用户看到PDF或打开PDF查看器?
将PDF下载到隐藏的iframe并触发它用JavaScript打印的一些变化?
这个问题演示了一种可能对您有帮助的方法: 无声打印embedded的PDF
它使用<embed>
标签将PDFembedded到文档中:
<embed type="application/pdf" src="path_to_pdf_document.pdf" id="pdfDocument" width="100%" height="100%" />
然后在加载PDF时调用JavaScript中的元素的.print()
方法:
function printDocument(documentId) { var doc = document.getElementById(documentId); //Wait until PDF is ready to print if (typeof doc.print === 'undefined') { setTimeout(function(){printDocument(documentId);}, 1000); } else { doc.print(); } }
您可以将embedded的内容放在隐藏的iframe中,然后从那里打印,为您提供无缝的体验。
这是一个从iframe打印PDF的function。
您只需要将PDF的URL传递给函数。 它将创build一个iframe并在PDF加载后触发打印。
请注意,该function不会破坏iframe。 相反,每次调用函数时都会重用它。 很难摧毁iframe,因为它是需要的,直到打印完成,打印方法没有callback支持(据我所知)。
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; }
https://github.com/mozilla/pdf.js/
现场演示http://mozilla.github.io/pdf.js/
这可能是你想要的,但我不明白这一点,因为现代浏览器包括这样的function,它也将在移动设备等低功耗设备上运行非常缓慢,顺便说一下,他们有自己优化的插件和应用程序。
从http://printjs.crabbly.com/下载Print.js
$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") });