从javascript嵌入标签打印Pdf
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从javascript嵌入标签打印Pdf,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2279字,纯文字阅读大概需要4分钟。
内容图文
![从javascript嵌入标签打印Pdf](/upload/InfoBanner/zyjiaocheng/708/020eaf75a4294561b061649300e84315.jpg)
我有一个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)这会弹出打印对话框,但打印空白页.我希望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();
}
}
这每秒都会改变“未定义”. “打印”选项永远不可用.有任何想法吗?
解决方法:
我大约一周前对这些问题给予了赏金,它已经过期了.在经过大量研究之后,我将发布我在这里学到的东西.
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全部内容,希望文章能够帮你解决从javascript嵌入标签打印Pdf所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。