要在iOS的手機上顯示含有印章的PDF真的好麻煩
一開始用了pdf.js渗常,在沒有禁用UIWebView之前是沒有問題的刁愿,新系統(tǒng)一下就說不能用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];
? ? // 創(chuàng)建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];
? ? ? ? //刷新數(shù)據
? ? ? ? dispatch_async(dispatch_get_main_queue(), ^{
? ? ? ? ? ? [selfreloadData];
? ? ? ? });
? ? }];
? ? // 執(zhí)行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。如果有什么建議請留言吞杭,謝謝