【IOS】PDF开发集成大全

这篇笔记详细介绍了在iOS应用中显示PDF的多种方法,包括UIWebView、QLPreviewController、CGContextDrawPDFPage,并重点讲解了MuPDF类库的集成过程,包括依赖包的生成、源码添加、搜索路径配置等,以及解决PDF显示乱码问题的方案。
摘要由CSDN通过智能技术生成

写这篇笔记的原因是之前的老项目遇到了一个问题:iOS9后PDF中文会显示乱码,而且试了各种方法都不行,还好最终找到了解决方法---MuPDF
所以在此总结一下解决该问题过程中使用过的方法:

1.使用UIWebView加载

//代码很简单
UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:webView];

NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"pdf"];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:path]];
[webView loadRequest:request];

2.使用QLPreviewController打开

//初始化QLPreviewController对象
QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.dataSource = self;
[self.navigationController pushViewController:pageController animated:YES];

//再实现QLPreviewControllerDataSource的两个方法即可显示
//显示文件数量
- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller;
//文件路径URL
- (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index;

3.使用CGContextDrawPDFPage绘制

UIView- (void)drawRect:(CGRect)rect方法中绘制PDF内容,代码如下:

/*
Quartz2D              UIKit

y               (0, 0)|----------x
|                     |
|                     |
|                     |
|                     |
(0, 0) |---------x           y

*/
- (void)drawRect:(CGRect)rect {
// Drawing code

CGContextRef context = UIGraphicsGetCurrentContext();

//调整坐标系
CGContextTranslateCTM(context, 0.0, self.bounds.size.height);//先垂直下移height高度
CGContextScaleCTM(context, 1.0, -1.0);//再垂直向上翻转

//绘制pdf内容
CGPDFPageRef pageRef = CGPDFDocumentGetPage(pdfDocument, page);
CGContextSaveGState(context);
CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(pageRef, kCGPDFCropBox, s
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值