我想做客户端scrpting合并和拆分pdf,所以我想使用itextsharp.可以用于javascript.我是Javascript的新手.请帮助我提出宝贵的建议.
所以,我动态创建了一个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...
Run Code Online (Sandbox Code Playgroud)
那么,我如何获取这个 doc 变量并打印它。我发现的其他任何地方都使用 pdf 的网址。我需要先为它创建一个 url 吗?
因此,我目前使用的解决方案是在新选项卡/窗口中显示 pdf,从中可以打印 pdf。
window.open(doc.output('datauristring'));
Run Code Online (Sandbox Code Playgroud)
不幸的是,这只适用于 Chrome。任何人都知道如何让它在 IE、Firefox、Safari 等中工作?
我仍然想知道是否有办法跳过这一步(打开 pdf 然后需要按下另一个按钮)。
我已经看了一下stackoverflow试图找到一种方法现在这样做,并找不到合适的答案.我需要能够通过base64编码的字符串在新窗口或iframe中加载PDF,并在加载后立即触发它的打印预览.我可以使用这两种方法轻松加载PDF,但实际上无法正确显示打印预览.这是我尝试过的:
embed在新窗口中使用元素.window.print()即使在加载内容后,呼叫仍为空白.iframe与src="data:application/pdf;base64,JVBERi0..."和调用myFrame.contentWindow.print().但这会产生CORS错误.我不知道为什么,因为我没有通过iframe加载新域名,只是内容.iframe#2中的元素,并在整个窗口中调用print.这也显示一个空白页面.window.open('data:application/pdf;base64,JVBERi0...').print();.这也不起作用,因为它甚至根本不显示打印预览.我也试过延迟它,setTimeout但也没有做任何事情.在这一点上,我很困惑为什么这些都不起作用,特别是因为在Chrome中它显示如下的自定义菜单栏:
如果我点击那里的实际打印图标,打印预览是完美的.当我点击该按钮时,Chrome正在做什么,这正是我想要完成的.反正有没有触发这个功能?还是有另一种方法来实现我想要的东西?只是为了澄清,我只需要在Chrome中使用它,我不需要担心其他浏览器.