【发布时间】:2013-09-21 01:16:53
【问题描述】:
我有一个 PDF 文件,我正在尝试通过 Javascript 打印它。我已经尝试过这个嵌入技巧:Silent print a embedded PDF 但是,打印功能永远不会变得可用,它总是未定义。
我已经用这段代码尝试了 iframe 技巧:
function printPDF() {
if(document.getElementById("pdfDocument").contentWindow.document.readyState === "complete") {
document.getElementById("pdfDocument").focus();
document.getElementById("pdfDocument").contentWindow.print();
} else {
setInterval(printPDF(), 1000);
}
}
(pdfDocument 是 iframe 的 ID) 这确实会弹出打印对话框,但会打印一个空白页。我会喜欢嵌入标签的工作方式。但是为什么打印功能一直不可用呢?
关于这个主题的大多数帖子都很老了。最好的 HTML5/jQuery 方法是什么? (或者此时只是普通的 JS)
编辑:
这里是嵌入标签的JS代码:
function printPDF() {
alert(document.getElementById("pdfDocument").print);
//Wait until PDF is ready to print
if (typeof document.getElementById("pdfDocument").print == 'undefined') {
setTimeout(function(){printPDF();}, 1000);
} else {
var x = document.getElementById("pdfDocument");
x.print();
}
}
这会每秒不断地改变“未定义”。打印选项永远不可用。有什么想法吗?
【问题讨论】:
-
澄清一下:你想打印一个 iframe,你想静默打印,还是两者兼而有之?
-
要么/全部大声笑,现在什么都可以!
-
:S 你怎么知道 print 总是返回 undefined,你没有任何 return 语句?
-
哦,jsFiddle 会有所帮助...
-
我知道这已经很老了,但是...有没有其他人注意到
setInterval(printPDF(), 1000);正在将间隔设置为 printPDF() 的返回结果?由于您创建了一个递归函数,它恰好可以工作,但它实际上并没有利用间隔......
标签: javascript html pdf