在我开始之前,我只想说我知道这已经被问过了,并且我已经在这个论坛上搜寻了几个小时,但没有一个答案对我一直有效。
我正在为Webapp构建一个页面,该页面将从数据库中提取Base64编码的PDF。然后,这将需要在PDF Viewer的屏幕上显示,并且需要可打印。
我尝试了3件事。
1。用于JavaScript PDF Viewer的Kendo UI。
此解决方案提供了在所有浏览器中查看PDF的功能,但没有内置打印解决方案。我尝试使用Stackoverflow上的一些代码,但这似乎只能在Firefox上使用。
我从here获得了代码。在Firefox上,它将打开一个包含PDF的新窗口,然后打开该PDF的打印窗口,这正是我所期望的。但是,在Chrome上,它可以很好地打开PDF窗口,但是在进行打印时,打印预览会在空白页上显示日期为顶部。
2。 HTML对象
这给了我所需的一切,但是在IE和Edge上不起作用。在Chrome和FF上,它可以完美显示PDF,而内置的PDF查看器适用于任何一种浏览器,并在顶部带有打印按钮。
在IE和Edge上,它显示一个空白框。
请注意,selectedPDFData是包含Base64编码的PDF的字符串。
代码:
var objbuilder = '';
objbuilder += ('<object width="100%" height="750" data = "data: application / pdf; base64, ');
objbuilder += (selectedPDFData);
objbuilder += ('" type="application/pdf" class="internal">');
objbuilder += ('<embed src="data:application/pdf;base64,');
objbuilder += (selectedPDFData);
objbuilder += ('" type="application/pdf" />');
objbuilder += ('</object>');
然后将其插入div。
3。 iframes
这提供了与先前解决方案相同的功能,尽管存在相同的问题。
var testiFrame = '';
testiFrame += '<iframe src="data:application/pdf;base64,';
testiFrame += (selectedPDFData)
testiFrame += '" width="100%" height="750"><iframe>';
这也插入到Div中。
尝试了所有这些选项后,我完全不知所措,而且似乎找不到其他解决方案。
答案 0 :(得分:0)
您可以使用Print JS来打印base64 PDF
<button type="button" onclick="printJS({printable: base64, type: 'pdf', base64: true})">
Print PDF with Message
</button>