Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在所有浏览器中打印使用jsPDF创建的pdf_Javascript_Pdf_Jspdf - Fatal编程技术网

Javascript 在所有浏览器中打印使用jsPDF创建的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吗 因此,我

所以,我已经动态创建了一个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吗

因此,我目前的解决方案是在一个新的选项卡/窗口中显示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激活打印。