它能在Edge,Chrome,Firefox上工作,但不适用于safari。在Safari中,iframe看起来好像知道它应该显示一个pdf (灰色背景),但是里面没有页面。
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
发布于 2019-07-02 07:47:41
回答这个问题可能有点晚了,但我在使用Safari上的iframe从blob url预览PDF时,也遇到了同样的问题。FileReader
为我做了这个把戏。从您的代码中,而不是使用window.URL.createObjectURL(pdf)
,阅读blob,这里是通过一个FileReader
的pdf,如下所示:
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使用这个技巧。
https://stackoverflow.com/questions/56332049
复制相似问题