要在iOS的手机上显示含有印章的PDF真的好麻烦

一开始用了pdf.js,在没有禁用UIWebView之前是没有问题的,新系统一下就说不能用UIWebView,然后尝试用wkwebview,但是一直都不行。

然后尝试了用QLPreviewController,成功解决了问题,可能有版本低的会使用不了,但是暂时没有别的好办法了

直接上关键代码:

#import "DSLQLPreviewController.h"

@interface DSLQLPreviewController ()

@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)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。如果有什么建议请留言,谢谢

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐