在iPhone程序上读取PDF文件
怎么在iPhone程序中读取PDF的内容呢?答案是,苹果为我们准备了一个很神奇的framework Q2D(Quartz 2D)。Q2D提供了全套的PDF读取API,接下来我们来看看如果简单的使用Q2D来读取PDF文件:
我建立了一个工程叫iPhonePDF, 添加了一个UIScrollView(不知道怎么添加UIScrollView? 添加一个UIView然后把interface上的UIView改成UIScrollView就可以啦…)名为PDFView
看看PDFView里面有什么吧
- @interface PDFView : UIScrollView {
- NSString *filePath;
- CGPDFDocumentRef pdfDocument;
- CGPDFPageRef page;
- int pageNumber;
- }
- @property (copy, nonatomic) NSString *filePath;
- @property int pageNumber;
- -(CGPDFDocumentRef)MyGetPDFDocumentRef;
- -(void)reloadView;
- -(IBAction)goUpPage:(id)sender;
- -(IBAction)goDownPage:(id)sender;
- @end
filePath是储存pdf文件的位置的,得到文件位置就是老话题了:[NSBundle mainBundle]… 后面的会写吧… 不记得了在我博客里面搜索吧
CGPDFDocumentRef是PDF文档索引文件,Q2D是Core Foundation的API,所以没看到那个星星~
CGPDFPageRef是PDF页面索引文件
pageNumber是页码
下面的几个函数其实一看就明了了,翻页的,和刷新页面的。第一个是自定义的getter
然后我们看看m文件里面有用的方法:
- @implementation PDFView
- @synthesize filePath,pageNumber;
- - (void)drawRect:(CGRect)rect //只要是UIView都有的绘图函数,基础哟~
- {
- if(filePath == nil) //如果没被初始化的话,就初始化
- {
- pageNumber = 10; //这个其实应该由外部函数控制,不过谁让这个程序特别简单呢
- filePath = [[NSBundle mainBundle] pathForResource:@"zhaomu" ofType:@"pdf"];
- //这里,文件在这里!
- pdfDocument = [self MyGetPDFDocumentRef]; //从自定义getter得到文件索引
- }
- CGContextRef myContext = UIGraphicsGetCurrentContext();
- //这个我研究了一段时间呢,不过就照打就可以了
- page = CGPDFDocumentGetPage(pdfDocument, pageNumber);
- //便捷函数,告诉人家文档,告诉人家页码,就给你页面索引
- CGContextDrawPDFPage(myContext, page);
- //画!
- }
- //此getter可以考虑照打... 都是CF函数,我看到就恶心。
- //其实不是很难了,得到文件,转换成URL,然后通过
- //CGPDFDocumentCreateWithURL(url)得到文件内容索引
- //Ta Daaa~~
- - (CGPDFDocumentRef)MyGetPDFDocumentRef
- {
- CFStringRef path;
- CFURLRef url;
- CGPDFDocumentRef document;
- path = CFStringCreateWithCString(NULL, [filePath UTF8String], kCFStringEncodingUTF8);
- url = CFURLCreateWithFileSystemPath(NULL, path, kCFURLPOSIXPathStyle, 0);
- CFRelease(path);
- document = CGPDFDocumentCreateWithURL(url);
- CFRelease(url);
- return document;
- }
- -(void)reloadView
- {
- [self setNeedsDisplay]; //每次需要重画视图了,就call这个
- }
- -(IBAction)goUpPage:(id)sender
- {
- pageNumber++;
- [self reloadView];
- }
- <mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js"></mce:script><mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js"></mce:script>-(IBAction)goDownPage:(id)sender
- {
- pageNumber--;
- [self reloadView];
- }
- @end
转载于:https://www.cnblogs.com/zuozeing/p/3561498.html
在iPhone程序上读取PDF文件相关推荐
- ipad iphone开发_如何在iPhone或iPad上阅读PDF文件
ipad iphone开发 PDFs are something of a necessary evil. Sure, they're a handy way to preserve any docu ...
- python 读取文件读出来是什么格式-深入学习python解析并读取PDF文件内容的方法...
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
- python中读取文件内容-深入学习python解析并读取PDF文件内容的方法
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
- python读取pdf文件_深入学习python解析并读取PDF文件内容的方法
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
- 【word2vec】python读取pdf文件,通过词向量寻找相关词语
1. 什么是Word2vec 对于自然语音处理而言,首先要做的就是将文字转换为计算机能看懂的数字,也就是说,将词语进行数字化. (1)one-hot编码,比较常用的一种编码方式,又叫独热编码. 对于一 ...
- mac怎么合并两个容器_PDF怎样合并?在Mac上合并PDF文件的最佳方法
在保存编辑内容的同时合并PDF文件可能是一个大问题.合并大文件时,"预览"不涵盖展平,并且会使系统变慢.这些和其他问题可能会迫使您寻找更好的选择.让我们探索在Mac上组合PDF以涵 ...
- pdf上传及预览;file上传pdf文件及预览;vue上传pdf文件及预览;vue-pdf预览pdf文件
需求:上传pdf文件,并点击可以打开预览.使用input的file功能即可完成,预览只需要跳转到pdf的url地址即可.还可以配合vue-pdf直接预览,点击看这篇. 以下代码可直接复制使用!!!有效 ...
- java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件
简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库.开源的 iText 库使得 PDF 的创建变得轻松易行.本文介绍了 iText 并提供了一个使用它从 Java 技术应用 ...
- php上传pdf文件错误,php上传pdf文件,一些特殊字符丢失
php上传pdf文件,上传到服务器上发现pdf文件里面一些特殊字符不显示了,将pdf文件压缩成zip文件上传后,提示压缩包损坏 求高手解答 回复讨论(解决方案) php上传文件时,不会破坏文件内容.这 ...
最新文章
- ORA-01113 file 1 needs media recovery
- 机械秒表的使用方法_瓦楞纸箱防水性能检测方法
- mahout0.7 示例运行纪实
- JSP页面报错:“Uncaught SyntaxError: Unexpected token ”
- 一个对于小数四舍五入的算法C语言版
- 阿里云申请免费ssl证书并配置nginx
- java oracle 建表语句_oracle得到建表语句
- ussd代码大全_魅族ussd补电代码 | 手游网游页游攻略大全
- 为什么选择Mapabc
- 显卡驱动与cuda、cudnn之间的关系
- Php扫码签到功能怎么实现,扫码签到常用方法_云分组小程序
- 时下最热门的五款微信编辑器使用评测
- TPTP—详细说明讲解
- 日语 假名对应的汉字来源
- linux中|管道符的作用
- Vue TypeError: Cannot set properties of undefined (setting ‘msg‘) at eval (App.vue?91a0:25:1)
- ubuntu安装极点五笔并支持大字符集
- ECSHOP搜索引擎神器SEO秒收录插件,ECSHOP百度ping收录功能
- mysql 管理数据库和管理表笔记
- 万达体育走到新的十字路口
热门文章
- UVA 11992 - Fast Matrix Operations(段树)
- [转]Java Web基础——Action+Service +Dao三层的功能划分
- postgresql数据类型之数组类型
- Oracle 使用DBMS_SCHEDULER创建定时任务
- 使用 Raspberry Pi 远程桌面
- Dvsdk 下的CMEM学习
- 如何在XSLT中将字符串转换为大写或小写形式
- WinFormreportViewer报表[矩阵]的使用(一)(附源码示例) 之配餐系统的开发
- 软件设计方法和设计决策
- Yahoo,希望你和微软Bing能过的幸福