iOS 加载PDF问题无法显示电子章问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 加载PDF问题无法显示电子章问题相关的知识,希望对你有一定的参考价值。

参考技术A

公司项目中需要显示订单合同PDF文件。正常情况下,加载pdf文件直接通过UIWebView或者WKWebView就可以。不过实际情况中,PDF文件如果存在 电子签名(签章) 的话,直接通过webView是无法查看到 电子签名(签章) 的。可以写个简单的demo对 http://blogs.adobe.com/security/SampleSignedPDFDocument.pdf 这个pdf文件进行查看对比:

之前直接使用WKWebview加载pdf地址来处理的,具体实现是通过远端的 pdfviewer (可以理解为web端的pdf查看页面)拼接 pdf 的url 路径来加载的,大概如下:

不过由于存在跨域问题,需要进行cookie的注入操作,并且从远端进行解析加载pdf速度一直很慢,所有想尝试其他的方法。

调研过程略...
调研相关链接:
ios展示pdf签名时遇到的问题及解决办法
iOS实现PDF阅读功能调研

接入教程直接参照: iOS使用pdf.js打开PDF文件

参照上面的步骤介入后发现还是无法显示 电子签名(签章) 在查看 pdf.js 上的 issue 后发现有相关issue 如下:

其中 #4743 中 Osukaru 提出了解决方案:
在 src/core/annotation.js第601行(当前版本) 中

(后面查询过程中发现在 使用PDF.js如何显示pdf文件的电子签章 中也提到同样的解决办法。)

将 clone 下来的 pdf.js 中 src/core/annotation.js 文件修改后按照 iOS使用pdf.js打开PDF文件
重新构建执行

再接入到工程项目中即可,最终效果:
注意,这里没有使用上面提供的 http://blogs.adobe.com/security/SampleSignedPDFDocument.pdf 进行验证,是因为在运行过程中会crash,并抛出 WebActionDisablingCALayerDelegate willBeRemoved]: unrecognized selector sent 错误

以上是关于iOS 加载PDF问题无法显示电子章问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS 无法选择/突出显示 PDF 中的文本

谷歌浏览器无法加载PDF文件,下载显示文件损坏?

解决pdf.js无法完全显示pdf文件内容的问题

为啥 Today Widget 在 iOS 14 上显示“无法加载”且无法调试?

pdf下载,ios和android显示

Adobe AIR 无法在 iOS 上加载 PDF