iOS经典讲解之UIWebView加载PDF不显示电子签章解决方案

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Loving_iOS/article/details/83023873

一、对于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); 
}

5、如果需要修改加载页面的布局样式,或者隐藏下载按钮等,把viewer.html文件中相关代码注释掉,或者修改相关属性即可 。

猜你喜欢

转载自blog.csdn.net/Loving_iOS/article/details/83023873
今日推荐