mma*_*ran 13 javascript pdf html5
我有一个PDF文件,我试图通过Javascript打印它.我试过这个嵌入技巧:无声打印嵌入式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);
}
}
Run Code Online (Sandbox Code Playgroud)
(pdfDocument是iframe的ID)这会弹出打印对话框,但打印空白页.我希望embed标签的工作方式.但为什么打印功能永远不可用?
关于这个主题的大多数帖子都很老了.什么是最好的HTML5/jQuery方法呢?(或者只是普通的JS)
编辑:
这是embed标签的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();
}
}
Run Code Online (Sandbox Code Playgroud)
这每秒都会改变"未定义"."打印"选项永远不可用.有任何想法吗?
phi*_*han 13
我大约一周前对这些问题给予了赏金,它已经过期了.在经过大量研究之后,我将发布我在这里学到的东西.
PDF的显示方式因浏览器,浏览器版本,浏览器配置和操作系统而异.有很多变量,所以我将在这里讨论最常见的情况.
在所有浏览器上,我无法通过Javascript调用任何类型的print()方法,我只能使用PdfActions.OPENACTION会打印出来.我使用iText将这些嵌入到PDF中.
Chrome使用Adobe的查看器,该查看器不允许访问任何类型的print()方法,但会执行PDF中嵌入的PdfActions.因此,您可以在PDF中嵌入"OpenAction",并在从查看这些操作的任何应用程序打开时打印PDF调用.
Firefox(在特定版本之上,尽管所有最新版本)都使用Windows中的Adobe查看器,它也识别PdfActions.但是,在OSX中,它失去了对Adobe查看器的支持,并切换到Firefox查看器中的烘焙(pdf.js).哪个不支持PdfActions.
IE:我对IE没有太多考试.主要是因为在Firefox无法在OSX上运行之后,我放弃了从Javascript打印PDF(对我来说是一个要求).
我的PDF是由我控制的服务器生成的,因此我最终在服务器中进行了服务更改,并添加了一个获取PNG服务,该服务基于PDF生成使用的相同标记生成PNG.浏览器处理图像比我知道的PDF更好,但希望我能够重复使用PDF生成服务,因为它在我的代码中的其他地方使用.
它没有回答这个问题,但它是我所拥有的所有信息.我建议任何可能在将来发现这一点的人:如果可能的话,在这种情况下放弃PDF并简化.否则,如果您知道如何在OSX中的FF预览pdf查看器中通过Javascript调用print(),请更新此问题.
-Phil
对于 Javascript,我不确定我们是否可以做到这一点。但是可以使用脚本注入 pdf 文件来实现。如果我的理解是正确的,这就是谷歌所做的。
例如。
我们可以使用 iTextSharp 来模拟上述行为。
| 归档时间: |
|
| 查看次数: |
23376 次 |
| 最近记录: |