在所有浏览器中打印使用 jsPDF 创建的 pdf

Print a pdf created with jsPDF in all browsers

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

因此,我目前采用的解决方案是在新 tab/window 中显示 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();

它们都允许您在新的 window 中打开 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');

你最好从 npm 实现“printjs”,将 jspdf 文档转换为 blob 并像这样打印它

 const data = PDF.output('blob')
 const blobUrl = URL.createObjectURL(data);
 printJS(blobUrl);