一、
iOS12 系统可以直接使用WKWebView 加载pdf URL即可,便会显示电子签章
WKWebView从iOS 8 开始
二、
对于iOS 12以下版本使用pdf.js加载
注意:一定要把pdf下载到本地,否则报206错误
切记:拖到工程时选择 Create folder references
注意
使用UIWebView
默认是不显示电子签章、签名的,需要将pdf.worker.js文件相关代码注释
if (data.fieldType === 'Sig') {
// this.setFlags(_util.AnnotationFlag.HIDDEN);
}
pdf下载地址火狐浏览器的开源项目
但是要注意一下,高版本可能也不显示
下载之后把build和web拖到工程
使用方式
- (void)loadPDFFile:(NSString*)filePath {
NSString *viwerPath = [[NSBundle mainBundle] pathForResource:@"viewer" ofType:@"html" inDirectory:@"minified/web"];
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/"];
NSString *filePathForPDF = [path stringByAppendingPathComponent:filePath.lastPathComponent];
NSString *urlStr = [NSString stringWithFormat:@"%@?file=%@#page=1",viwerPath,filePathForPDF];
urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
[self.uiWebView loadRequest:request];
}
如果需要修改加载页面的布局样式,或者隐藏下载按钮等,把viewer.html文件中相关代码注释掉,或者修改相关属性即可 。
以上就完成了
可以尝试不下载直接去加载,但是可能会遇到跨区问题,也可能是服务端问题
1.需要把viewer.js文件将判断注释掉,pdf.js版本不同可能有些出入
// if (fileOrigin !== viewerOrigin) {
// throw new Error('file origin does not match viewer\'s');
// }
2.将 viewer.js的 var DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf'; 默认路径删掉,改为var DEFAULT_URL = '';
三、
Android类似