【发布时间】:2022-11-24 11:06:01
【问题描述】:
我使用 API 获取生成的 PDF 或存储在私有目录中的 PDF(只有在用户登录后才能访问)。
我的端点发送带有 Content-Type : application/pdf 的 http 响应。
我在 React.js 应用程序上收到它,它使用 fetch 从 response.blob() 执行 URL.createObjectURL(blob)。
当我将它推入 iframe <iframe src={blobUrl} type="application/pdf"></iframe> 时,它可以正常工作桌面浏览器但不在手机浏览器.
它甚至不适用于响应模式下的 chrome inspector。
但是,当我使用该代码下载它时,它可以在移动设备上运行:
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.style = 'display: none';
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
而且,当我执行 console.log(blobUrl) 时,网址正常https: blob:https://{domain}.com/00457da4-a423-44ea-a26b-a65f7ec17e42
有人知道如何在 iframe 中显示 PDF 以便在移动设备上预览吗?
[编辑] 它出人意料地适用于 safari mobile (IOS)
[编辑 2] 我在 chrome 桌面上进行了检查,发现了这个:
<embed type="application/x-google-chrome-pdf" src="chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/602420b2-c69b-486d-99f9-ece26af579be" original-url="blob:https://{domain}.com/c6c6af4f-554d-4c65-8ab3-1a2de6c39bd9" javascript="allow">
所以我认为查看 PDF 的能力来自 chrome 桌面中的“影子”扩展,这就是我们在移动设备上看不到它的原因。 Chrome 移动版没有扩展兼容性。
在这里确认: https://www.quora.com/Why-does-Chrome-on-Android-not-open-PDF-files-like-Chrome-on-Windows-Linux-can
// screenshot has been lost in the edit
[![在此处输入图片描述][1]][1]
【问题讨论】:
-
我在 mozilla 上取得了成功 pdf.js 对我来说无处不在
-
第二次投票给 pdf.js
-
@Bravo 你应该发布一个答案,这样你就可以获得这个赏金的荣誉 - 你是第一个建议 pdf.js 的人。
标签: javascript html iframe mobile blob