要在iOS的手机上显示含有印章的PDF真的好麻烦
一开始用了pdf.js,在没有禁用UIWebView之前是没有问题的,新系统一下就说不能用UIWebView,然后尝试用wkwebview,但是一直都不行。
然后尝试了用QLPreviewController,成功解决了问题,可能有版本低的会使用不了,但是暂时没有别的好办法了
直接上关键代码:
#import "DSLQLPreviewController.h"
@interface DSLQLPreviewController ()<QLPreviewControllerDataSource>
@end
#define FMFILE NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject
static NSString *pdfName = @"preImage.pdf";
@implementation DSLQLPreviewController
- (void)viewDidLoad {
[super viewDidLoad];
[selfloadData];
self.dataSource = self;
}
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller{
return1;
}
- (id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index{
return[NSURLURLWithString:[selfreturnURLStr]];
}
- (void)loadData{
NSURL*url = [NSURLURLWithString:self.urlStr];
// 创建session
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDownloadTask*task = [sessiondownloadTaskWithURL:urlcompletionHandler:^(NSURL*_Nullablelocation,NSURLResponse*_Nullableresponse,NSError*_Nullableerror) {
// NSString *filePath = [FMFILE stringByAppendingPathComponent:response.suggestedFilename];
NSString *filePath = [FMFILE stringByAppendingPathComponent:pdfName];
[[NSFileManager defaultManager] moveItemAtURL:location toURL:[NSURL fileURLWithPath:filePath] error:nil];
//刷新数据
dispatch_async(dispatch_get_main_queue(), ^{
[selfreloadData];
});
}];
// 执行task
[taskresume];
}
///获取新的PDF
- (NSString *)returnURLStr{
NSLog(@"file://%@",[FMFILE stringByAppendingPathComponent:pdfName]);
return [NSString stringWithFormat:@"file://%@",[FMFILE stringByAppendingPathComponent:pdfName]];
}
@end
直接传URL进来做处理,1 先下载了PDF文件,存到本地,2 从本地拿出来PDF在这个VC上显示,ok。如果有什么建议请留言,谢谢
网友评论