iOS/Android 加载PDF文件电子签章不显示问题

一、

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类似

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,859评论 1 45
  • 背景 公司项目中需要显示订单合同PDF文件。正常情况下,加载pdf文件直接通过UIWebView或者WKWebVi...
    黄二瓜阅读 11,037评论 12 6
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 文:樊艳萍 那个人把拖鞋整齐地摆在鞋架最底层,然后用钥匙悄悄把门带上。邻居曾以为他一直待在家里。 那个人站在黄色安...
    樊艳萍阅读 353评论 3 7
  • 每每有情绪的时候,写出的文字容易有尘土味。尤其是消极情绪来临,好像车马驰过的土路,尘土飞扬。出口的每一个字都带有极...
    晓天狼星阅读 435评论 3 5