iOS展示PDF发票显示印章

近期公司项目需要优化展示PDF发票的功能,之前是直接用UIWebView展示PDF发票数据,印章无法展示出来,所以保存功能也是废的。

刚开始通过文章了解到,使用系统框架QLPreviewController展示PDF发票在iOS13上没有问题,可以展示印章,但是评论区说在iOS10以下,无法展示印章,而且需要做PDF文件本地缓存,步骤比较繁琐,所以打算另辟蹊径。

果不其然,一番折腾后,发现让后台先把PDF发票的数据转为base64图片,再返回给前端展示,这个方案可行。

最终iOS这边选择用以下方式展示base64编码的图片

// 这里的变量 dataURIStr 形如字符串 ,dataURLStr:base64编码图片@"data:image/png;base64,iVBORw0KGgoAy ... RK5CYII="
NSURL *imgURL = [NSURL URLWithString:dataURIStr];
NSData *imgData = [NSData dataWithContentsOfURL:imgURL];
UIImage *img = [UIImage imageWithData:imgData];

还有一种展示方案如下,该方法不需要拼接前缀格式,比较方便。

// 这里的变量 base64ImgStr 形如字符串 @"iVBORw0KGgoAy ... RK5CYII=",即图片经 base64 编码后所得的字符串
NSData *imgData = [[NSData alloc] initWithBase64EncodedString:base64ImgStr options:0];
UIImage *img = [UIImage imageWithData:imgData];

参考文献

iOS 解决展示PDF电子签章不显示问题
iOS展示base64编码的图片

你可能感兴趣的:(iOS展示PDF发票显示印章)