最近在webview中加载pdf链接的时候签章加载不出来,于是就网上搜了很多相关的文章,最终解决了这个问题,下面为了防止各位同学因为碰到类似的问题踩坑,做下归纳。
UIWebView 加载pdf签章是始终无法显示的
WKWebView 在iOS12以后是可以加载签章的。
因为公司项目比较老,我这边统一用的UIWebView去加载pdf,具体实现如下(注:PDF.js只支持UIWebView)
1.需要引入PDF.js文件(不知道为啥不能免积分下载 有知道可以私信或者留言教我一下)
2.具体实现思想如下:
先查询本地是否已经有过此链接pdf的文件,如果有直接加载,如果没有下载并保存起来供下次使用。(因为在app中此pdf是在比较深的页面中才会有,而且pdf文件一般不做改变,所以才会做缓存,防止每次让用户去下载影响用户体验,每次打开app后都会清理相关缓存,以防pdf可能会出现改变)
if ([self isExistCurrentPDF]) {
NSString *viwerPath = [[NSBundle mainBundle] pathForResource:@"viewer" ofType:@"html" inDirectory:@"PDFJS/web"];
NSString *urlStr = [NSString stringWithFormat:@"%@?file=%@#page=1",viwerPath,[self getCurrentPDFPath]];
urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
[self loadWebView:urlStr];
}else{
[self downloadPDFFiles];
}
- (void)loadWebView:(NSString *)urlStr
{
if (urlStr.length==0)
{
return;
}
NSURL *url = [[NSURL alloc] initWithString:urlStr];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url];
[request addValue:[self getCookies] forHTTPHeaderField:@"Cookie"];
[self.webView loadRequest:request];
}
参考链接:https://www.jianshu.com/p/ded81b392d4d
https://blog.csdn.net/loving_ios/article/details/83023873