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

你可能感兴趣的:(iOS/Android 加载PDF文件电子签章不显示问题)