关于使用pdf.js预览pdf的一些问题

本文探讨了在移动端应用中使用PDF.js替代MultiPdf库解析复杂PDF文档的方法,包括电子签章和文字显示问题的解决方案,以及如何通过webview加载本地PDF文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手机应用中pdf展示使用非常广泛, 一些pdf由于特殊的内容比如文字、电子签章必须使用复杂的解析器来解析,当使用MultiPdf 这个库加载,会使得包变得非常庞大, 这里我们考虑使用pdf.js 来解析pdf.

引用非常简单,只需要把js相关文件放到assets文件夹中即可,然后通过webview来加载。android 使用H5加载非常缓慢。这里pdfUrl是本地路径。,这里要注意路径问题viewer.html的路径。

mWebView.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file=" + pdfUrl)

使用过程中会有两个问题:
电子签章(electronic signature):
解决办法:pdf.worker.js注意注释这一行代码

 data.readOnly = _this2.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);
    if (data.fieldType === 'Sig') {
//      _this2.setFlags(_util.AnnotationFlag.HIDDEN);
    }
    return _this2;

部分机型出现文字混乱问题:
解决办法:pdf.worker.js 加载文字这个地方增加动态码 Math.floor(Math.random()*9999).toString()

 (0, _util.assert)(fontID, 'The "fontID" must be defined.');
      font.loadedName = 'g_' +  Math.floor(Math.random()*9999).toString() + this.pdfManager.docId + '_f' + fontID;
      font.translated = fontCapability.promise;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值