【发布时间】:2023-08-18 00:54:01
【问题描述】:
所以,我已经动态创建了一个 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。我需要先为其创建一个网址吗?
因此,我目前采用的解决方案是在新选项卡/窗口中显示 pdf,从中可以打印 pdf。
window.open(doc.output('datauristring'));
很遗憾,这只适用于 Chrome。有人知道如何让它在 IE、Firefox、Safari 等中运行吗?
我仍然想知道是否有办法跳过这一步(打开 pdf,然后需要按下另一个按钮)。
【问题讨论】:
-
您很可能无法直接打印。您必须利用浏览器的打印对话框,即使这样也可能不起作用:将您的文档嵌入为 iframe 或弹出窗口,然后在其上执行 JS 的
print()函数。但正如我所说,即使这样也是一场冒险游戏:浏览器可能不允许这样做,或者将打印命令解释为与(空)页面而不是嵌入内容有关。我会考虑显示 PDF 或允许下载它(就像 jsPDF 网站一样)并将打印留给用户。 -
通过浏览器的打印对话框发送它不会有问题,但下载 pdf 是我不惜一切代价试图避免的事情
-
看看这个答案*.com/q/33900689/2446808 或这个*.com/q/32280613/2446808。自动打开打印对话框似乎确实充满了问题,所以我可能会选择“在框架/弹出窗口中显示并让用户单击打印”选项。
-
练习的全部目的是让用户点击一个按钮来创建 pdf(如上),然后说 pdf 打印,而无需用户按下任何按钮或下载任何东西来打印它
-
这很可能永远不会起作用。如果您发现任何浏览器不允许这样做,那么他们应该这样做。网络安全和东西。想想如果可能的话,一个人会写出多么可怕的漏洞,在没有用户交互的情况下从 javascript 激活打印。
标签: javascript pdf jspdf