Javascript 在所有浏览器中打印使用jsPDF创建的pdf
所以,我已经动态创建了一个pdf,现在我想打印它:Javascript 在所有浏览器中打印使用jsPDF创建的pdf,javascript,pdf,jspdf,Javascript,Pdf,Jspdf,所以,我已经动态创建了一个pdf,现在我想打印它: var doc = new jsPDF(); var name = "Doe, John" doc.setFontType("normal"); doc.setFontSize(12); doc.text(20,20,'Name: '+ name); //do something that prints the pdf... 那么,如何获取这个doc变量并打印它呢。我发现的其他地方都使用pdf的url。我需要先为它创建一个url吗 因此,我
var doc = new jsPDF();
var name = "Doe, John"
doc.setFontType("normal");
doc.setFontSize(12);
doc.text(20,20,'Name: '+ name);
//do something that prints the pdf...
那么,如何获取这个doc变量并打印它呢。我发现的其他地方都使用pdf的url。我需要先为它创建一个url吗
因此,我目前的解决方案是在一个新的选项卡/窗口中显示pdf,从中可以打印pdf
window.open(doc.output('datauristring'));
不幸的是,这只适用于Chrome。有人知道如何让它在IE、Firefox、Safari等环境中工作吗
我仍然想知道是否有一种方法可以跳过这一步(打开pdf,然后需要按下另一个按钮)。您所需要的就是添加这一步
doc.save('Test.pdf')代码>
(我想您已经在按钮触发器中包含了上述所有编写的代码,用户点击该按钮可获取pdf)因此,总之,对于Chrome和Safari,使用
window.open(doc.output('datauristring'));
但是对于IE和Firefox,使用
doc.save();
这两个选项都允许您在新窗口中打开pdf,并从中打印。对于那些花时间了解在其他浏览器上需要什么的用户,请在此处随意添加您的研究…尝试以下方法:
window.open(doc.output('bloburl'), '_blank');
有时adblock会出现问题。jsPDF库提供了一种方法autoPrint()
。
您可以使用它,如下所示
var doc = new jsPDF();
var name = "Doe, John"
doc.setFontType("normal");
doc.setFontSize(12);
doc.text(20,20,'Name: '+ name);
doc.autoPrint();
//This is a key for printing
doc.output('dataurlnewwindow');
您很可能无法直接打印它。您必须利用浏览器的打印对话框,即使这样也可能不起作用:将您的文档作为iframe或弹出窗口嵌入,然后在其上执行JS'print()
函数。但正如我所说的,这也是一个危险的游戏:浏览器可能不允许它,或者将print命令解释为与(空)页面相关,而不是与嵌入内容相关。我会考虑显示PDF或允许下载它(像JSPDF网站那样)并将打印留给用户。通过浏览器的打印对话发送它不会有问题,但是下载PDF是我试图避免在所有成本上看这个答案或这一点。自动打开打印对话框似乎有很多问题,所以我可能会选择“在框架/弹出窗口中显示并让用户单击打印”选项。本练习的全部目的是让用户点击一个按钮,从而创建pdf(如上所述),然后说pdf打印,用户不必再按任何按钮,也不需要下载任何东西来打印,这很可能永远不会起作用。如果您发现任何浏览器都不允许这样做,那么他们应该这样做。网络安全等等。想一想,如果可能的话,一个人可以编写多么可怕的漏洞,在没有用户交互的情况下从javascript激活打印。