iOS 技巧

关于iOS的PDF(含有印章的)显示问题

2020-08-26  本文已影响0人  女孩的日常流水

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

上一篇 下一篇

猜你喜欢

热点阅读