我想要构建的东西是通过单击按钮我想触发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。 –