HarmonyOS鸿蒙Next华为 Mate 70 Pro系统3.0.0 小程序webview pdfjs使用问题
HarmonyOS鸿蒙Next华为 Mate 70 Pro系统3.0.0 小程序webview pdfjs使用问题 小程序内嵌h5,h5使用pdfjs时报错failed to fetch,安卓和ios正常
5 回复
大佬非常感谢
有没有详细的报错信息
在HarmonyOS Next(3.0.0)小程序WebView中使用pdfjs需注意:WebView需启用JavaScript、允许加载本地资源;pdfjs版本建议≤2.16.105,避免高版本API冲突;部分PDF动态表单或加密文件可能渲染失败,可降级为图片流预览。若文件路径含中文,需先URI编码。
在 HarmonyOS Next 小程序内嵌 H5 使用 pdfjs 出现 failed to fetch,安卓和 iOS 正常,通常是因为 WebView 对 fetch 请求的 CORS 策略更加严格,或对 PDF 文件来源的 URL scheme(如 blob:/data-uri)支持不足。
解决方案:
- 若 PDF 来自远程 URL,请确保服务端响应头包含
Access-Control-Allow-Origin: *或匹配的小程序 origin。 - 若加载本地文件,避免直接使用 blob URL 传递给 pdfjs,可改用
pdfjsLib.getDocument({ data: arrayBuffer })方式,通过小程序 bridge 读取文件数据并转为 ArrayBuffer 传入。 - 可尝试在 pdfjs 内部将
fetch降级为XMLHttpRequest,因为 HarmonyOS WebView 对 xhr 的跨域支持更完整(修改 pdf.js 中NetworkManager的实现)。


