首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >safari iframe中的‘'application/pdf’blob不显示,但是blob url在safari中的一个单独的选项卡中工作。

safari iframe中的‘'application/pdf’blob不显示,但是blob url在safari中的一个单独的选项卡中工作。
EN

Stack Overflow用户
提问于 2019-05-27 20:20:10
回答 1查看 1.3K关注 0票数 2

它能在Edge,Chrome,Firefox上工作,但不适用于safari。在Safari中,iframe看起来好像知道它应该显示一个pdf (灰色背景),但是里面没有页面。

代码语言:javascript
运行
复制
const pdf = new Blob([new Uint8Array(arrayBuffer)], { type: 'application/pdf' })
setDataStreamURL(window.URL.createObjectURL(pdf))
...
<iframe title={iframeTitle} className={className} src={dataStreamURL} type={type} />

如果我给它一个像这样的pdf的url,它确实很好:

https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf

但我需要给它window.URL.createObjectURL(pdf)创建的window.URL.createObjectURL(pdf) url

EN

回答 1

Stack Overflow用户

发布于 2019-07-02 07:47:41

回答这个问题可能有点晚了,但我在使用Safari上的iframe从blob url预览PDF时,也遇到了同样的问题。FileReader为我做了这个把戏。从您的代码中,而不是使用window.URL.createObjectURL(pdf),阅读blob,这里是通过一个FileReader的pdf,如下所示:

代码语言:javascript
运行
复制
const pdf = new Blob([new Uint8Array(arrayBuffer)], { type: 'application/pdf' })

const reader = new FileReader();

reader.onload = () => {
const url = reader.result; // Use this `url` in iframe src
};

reader.readAsDataURL(pdf);

注意到这个技巧在Safari中有效,但在其他浏览器中可能不起作用,所以对其他浏览器使用blob url,对Safari使用这个技巧。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56332049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档