在所有浏览器中查看和打印Base64 PDF

时间:2019-07-17 09:16:33

标签: javascript html pdf kendo-ui

在我开始之前,我只想说我知道这已经被问过了,并且我已经在这个论坛上搜寻了几个小时,但没有一个答案对我一直有效。

我正在为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中。

尝试了所有这些选项后,我完全不知所措,而且似乎找不到其他解决方案。

1 个答案:

答案 0 :(得分:0)

您可以使用Print JS来打印base64 PDF

<button type="button" onclick="printJS({printable: base64, type: 'pdf', base64: true})">
    Print PDF with Message
</button>