base64 嵌入式 PDF 文件不会在 Chrome 中呈现
Posted
技术标签:
【中文标题】base64 嵌入式 PDF 文件不会在 Chrome 中呈现【英文标题】:base64 embeded PDF files won't render in Chrome 【发布时间】:2020-07-28 03:07:15 【问题描述】:某些 PDF 文件无法在 Chrome 浏览器中呈现,但在 Firefox 中可以正常呈现。如果直接嵌入,所有文件在所有浏览器中都可以正常呈现。
<object id="content-view" :data="content_view.base64" type="application/pdf"></object>
令人困惑的部分是问题仅针对某些文件而不是全部。文件存储在不公开的文件夹中,这就是为什么它们以 base64 格式提供给用户查看。
我使用在线 base64 解码器测试了有问题的文件,得到了相同的结果。在 FF 中渲染,不在 Chrome 中渲染。
我无法共享任何 PDF 文件。它们都来自同一来源,从同一设备扫描,PDF 版本 1.4,4 页。
我试过了:
使用 iframe、嵌入和对象(结果相同) 在 Chrome 网站设置中取消阻止不安全的内容 在 Adobe Acrobat 中打开和重新保存 使用在线 PDF 分析器查看是否存在任何问题(未找到)【问题讨论】:
这很可能是 chrome 的一个 bug,也许你应该提交一个 bug 报告 使用 pdf.js,我在我的网站上使用它在我网页的画布上呈现 pdf 我也有同样的问题。这很烦人,在 FF 中可以正常打开。 【参考方案1】:您可以使用Mozilla编写的JS,而不是使用浏览器的原生PDF渲染器。
ViewerJS 提供了一个很好的接口,如果你想把它嵌入到一个页面中,那么你可以把它放在一个 iframe 中并用iFrame-resizer 控制它。
【讨论】:
【参考方案2】:不要在 html 对象元素中打开 PDF 文件,而是使用 Blob URL 在新窗口中打开它。
请参考
Creating a BLOB from a Base64 string in javascript
将 Base64 转换为 Blob
【讨论】:
以上是关于base64 嵌入式 PDF 文件不会在 Chrome 中呈现的主要内容,如果未能解决你的问题,请参考以下文章
在 Typescript 中对嵌入的 PDF 进行 Base64 解码
如何在 iframe 中设置 base64 pdf 的文件名?