直接从JavaScript打印PDF
我正在建立一个HTML列表的PDF。 在列表中,我想包括下载链接和打印按钮/链接。 有没有办法直接打开PDF的打印对话框,而不需要用户看到PDF或打开PDF查看器?
将PDF下载到隐藏的iframe并触发其使用JavaScript打印的一些变体?
这个问题演示了一种可能对您有所帮助的方法:无声打印嵌入式PDF
它使用<embed>
标签将PDF嵌入到文档中:
<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();
}
}
您可以将嵌入的内容放在隐藏的iframe中,然后从那里打印,为您提供无缝的体验。
这是一个从iframe打印PDF的功能。
您只需将PDF的URL传递给函数即可。 一旦PDF加载,它将创建一个iframe并触发打印。
请注意,该功能不会破坏iframe。 相反,每次调用函数时都会重用它。 很难摧毁iframe,因为直到打印完成才需要它,并且打印方法没有回调支持(据我所知)。
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;
}
从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")
});
链接地址: http://www.djcxy.com/p/36453.html