如何在 iOS 系统中读取带加密印章的 PDF 文件 #2
onnttf
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
在与电子签章公司合作时,我们收到了一份带有加密印章的
PDF
文件。在测试过程中,无论通过UIWebView
还是WKWebView
打开,文件中的加密印章都无法成功展示。经过不断地调研与实践,我们成功解决了这一问题。现在将解决方案分享给大家。
实现步骤
准备工作
首先,我们定义几个常用的宏,以便在后续代码中使用,提升代码的可读性和简洁性:
添加 WKWebView
我们使用
WKWebView
来加载和展示PDF
文件。下载 PDF 文件
加载
PDF
文件与 js 进行交互
与
js
的交互主要是为了在控制器中获取PDF
文件的加载状态。通过这种交互,我们能够实时感知PDF
文件是否加载完成,或者在加载失败时处理错误提示。在
js
代码中,当PDF
文件加载完成或失败时,调用已注册的接口将状态传递给原生代码。示例代码如下:
在原生代码中,通过实现
WKScriptMessageHandler
协议的方法接收js
传递的消息并处理:兼容 iOS8
到此为止,我们已经成功在
iOS9
及以上的系统中打开带有加密印章的PDF
文件。然而,在
iOS8
中,由于系统限制,PDF
文件无法正常加载。接下来,我们将详细说明原因并提供解决方案。原因分析
在
iOS9
及以上版本,WKWebView
默认支持从NSBundle
加载HTML
、JS
和其他静态资源。而在iOS8
中,这些资源必须位于tmp
目录或沙盒的其他可写路径中才能被访问。兼容方案
为了解决上述问题,我们需要根据系统版本决定
HTML
和JS
文件的存储位置。如果运行在iOS8
上,我们将资源复制到tmp
目录下;否则,直接从NSBundle
加载。以下是完整的兼容方案代码:
最后
通过文中所述的方案,无论用户是在
iOS8
还是更新版本的系统中,都可以顺利打开带有加密印章的PDF
文件了。Beta Was this translation helpful? Give feedback.
All reactions