我想要構建的東西是通過單擊按鈕我想觸發PDF文件的打印,但不打開它。打印PDF時不用肉眼打開它
+-----------+
| Print PDF |
+-----------+
^Click *---------> printPdf(pdfUrl)
我第一次嘗試它的方法是使用iframe:
var $iframe = null;
// This is supposed to fix the onload bug on IE, but it's not fired
window.printIframeOnLoad = function() {
if (!$iframe.attr("src")) { return; }
var PDF = $iframe.get(0);
PDF.focus();
try {
// This doesn't work on IE anyways
PDF.contentWindow.print();
// I think on IE we can do something like this:
// PDF.document.execCommand("print", false, null);
} catch (e) {
// If we can't print it, we just open it in the current window
window.location = url;
}
};
function printPdf(url) {
if ($iframe) {
$iframe.remove();
}
$iframe = $('<iframe>', {
class: "hide",
id: "idPdf",
// Supposed to be a fix for IE
onload: "window.printIframeOnLoad()",
src: url
});
$("body").prepend($iframe);
}
此作品在Safari(桌面& iOS版)和Chrome(我們可以概括它也許到WebKit的?)。
在Firefox上,PDF.contentWindow.print()
以permission denied
錯誤結尾(即使PDF是從同一個域加載的)。
在IE(11)上,onload
處理程序無法正常工作。
現在,我的問題是:是否有另一種更好的方式來打印PDF,而不需要視覺上打開它給用戶?
跨瀏覽器的東西在這裏很關鍵。我們應該支持儘可能多的瀏覽器。
達到此目的的最佳方法是什麼?我的開局是好的嗎?如何完成它?
我們現在在2016年,我覺得這在整個瀏覽器中實現仍然很痛苦。
所以,如果我理解正確,你不想顯示PDF,但仍然打印它...所以只需用其他詞下載?或者按照正常方式進行操作並隱藏該部分。 – Jorrex
打開PDF時,不能將PDF設置爲自動打印? – epascarello
@Jorrex不,在隱藏的iframe中打開它,並在該iframe的上下文中打開打印對話框。 iframe不是要求,但這是我的第一次嘗試。我不確定是否有其他方法可以做到這一點......簡而言之:當我點擊按鈕時,打印對話框應該打開並打印該pdf。 –