一、对于iOS 12系统可直接使用WKWebView 加载pdf url 即可,便会显示电子签章,WKWebView是从 iOS 8.0 和 OS X 10.10 开始的;
二、对于iOS 12以下版本,有其他的解决方案:
iOS版本 < 12的情况可以使用PDF.js:
PDF.js可以实现在html下直接浏览pdf文档,是一款开源的pdf文档读取解析插件,非常强大,能将PDF文件渲染成Canvas。PDF.js主要包含两个库文件,一个pdf.js和一个pdf.worker.js,一个负责API解析,一个负责核心解析。
pdf.js是火狐浏览器的开源项目,地址为: http://mozilla.github.io/pdf.js/
下载Build,包括build、web两个文件夹,这是我们需要的:
把文件复制到工程文件夹,然后拖到工程中,注意不要选Create group
加载实例:
NSString *filePath = @"xxx.pdf";
NSString *viwerPath = [[NSBundle mainBundle] pathForResource:@"viewer" ofType:@"html" inDirectory:@"minified/web"];
NSString *urlStr = [NSString stringWithFormat:@"%@?file=%@#page=1",viwerPath,filePath];
urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
[web loadRequest:request];
注意:
1、一定使用UIWebview加载;
2、 跨域加载,大多数情况是加载服务器远程pdf文档,此时会加载失败,找到viewer.js文件将判断注释掉即可;
// if (fileOrigin !== viewerOrigin) {
// throw new Error('file origin does not match viewer\'s');
// }
3、将 viewer.js的 var DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf'; 默认路径删掉,改为var DEFAULT_URL = '';
4、默认是不显示电子签章、签名的,若需要,将worker.js文件中的相关代码注释;
if (data.fieldType === 'Sig') {
//WGZ
//warn('unimplemented annotation type: Widget signature');
//this.setFlags(AnnotationFlag.HIDDEN);
}