怎么在iPhone程序中读取PDF的内容呢?答案是,苹果为我们准备了一个很神奇的framework Q2D(Quartz 2D)。Q2D提供了全套的PDF读取API,接下来我们来看看如果简单的使用Q2D来读取PDF文件:

我建立了一个工程叫iPhonePDF, 添加了一个UIScrollView(不知道怎么添加UIScrollView? 添加一个UIView然后把interface上的UIView改成UIScrollView就可以啦…)名为PDFView

看看PDFView里面有什么吧

复制到剪贴板  C/C++代码
  1. @interface PDFView : UIScrollView {
  2. NSString *filePath;
  3. CGPDFDocumentRef pdfDocument;
  4. CGPDFPageRef page;
  5. int pageNumber;
  6. }
  7. @property (copy, nonatomic) NSString *filePath;
  8. @property int pageNumber;
  9. -(CGPDFDocumentRef)MyGetPDFDocumentRef;
  10. -(void)reloadView;
  11. -(IBAction)goUpPage:(id)sender;
  12. -(IBAction)goDownPage:(id)sender;
  13. @end

filePath是储存pdf文件的位置的,得到文件位置就是老话题了:[NSBundle mainBundle]… 后面的会写吧… 不记得了在我博客里面搜索吧

CGPDFDocumentRef是PDF文档索引文件,Q2D是Core Foundation的API,所以没看到那个星星~

CGPDFPageRef是PDF页面索引文件

pageNumber是页码

下面的几个函数其实一看就明了了,翻页的,和刷新页面的。第一个是自定义的getter

然后我们看看m文件里面有用的方法:

复制到剪贴板  C/C++代码
  1. @implementation PDFView
  2. @synthesize filePath,pageNumber;
  3. - (void)drawRect:(CGRect)rect //只要是UIView都有的绘图函数,基础哟~
  4. {
  5. if(filePath == nil) //如果没被初始化的话,就初始化
  6. {
  7. pageNumber = 10;   //这个其实应该由外部函数控制,不过谁让这个程序特别简单呢
  8. filePath = [[NSBundle mainBundle] pathForResource:@"zhaomu" ofType:@"pdf"];
  9. //这里,文件在这里!
  10. pdfDocument = [self MyGetPDFDocumentRef]; //从自定义getter得到文件索引
  11. }
  12. CGContextRef myContext = UIGraphicsGetCurrentContext();
  13. //这个我研究了一段时间呢,不过就照打就可以了
  14. page = CGPDFDocumentGetPage(pdfDocument, pageNumber);
  15. //便捷函数,告诉人家文档,告诉人家页码,就给你页面索引
  16. CGContextDrawPDFPage(myContext, page);
  17. //画!
  18. }
  19. //此getter可以考虑照打... 都是CF函数,我看到就恶心。
  20. //其实不是很难了,得到文件,转换成URL,然后通过
  21. //CGPDFDocumentCreateWithURL(url)得到文件内容索引
  22. //Ta Daaa~~
  23. - (CGPDFDocumentRef)MyGetPDFDocumentRef
  24. {
  25. CFStringRef path;
  26. CFURLRef url;
  27. CGPDFDocumentRef document;
  28. path = CFStringCreateWithCString(NULL, [filePath UTF8String], kCFStringEncodingUTF8);
  29. url = CFURLCreateWithFileSystemPath(NULL, path, kCFURLPOSIXPathStyle, 0);
  30. CFRelease(path);
  31. document = CGPDFDocumentCreateWithURL(url);
  32. CFRelease(url);
  33. return document;
  34. }
  35. -(void)reloadView
  36. {
  37. [self setNeedsDisplay]; //每次需要重画视图了,就call这个
  38. }
  39. -(IBAction)goUpPage:(id)sender
  40. {
  41. pageNumber++;
  42. [self reloadView];
  43. }
  44. <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
  45. {
  46. pageNumber--;
  47. [self reloadView];
  48. }
  49. @end

转载于:https://www.cnblogs.com/zuozeing/p/3561498.html

在iPhone程序上读取PDF文件相关推荐

  1. ipad iphone开发_如何在iPhone或iPad上阅读PDF文件

    ipad iphone开发 PDFs are something of a necessary evil. Sure, they're a handy way to preserve any docu ...

  2. python 读取文件读出来是什么格式-深入学习python解析并读取PDF文件内容的方法...

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  3. python中读取文件内容-深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  4. python读取pdf文件_深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  5. 【word2vec】python读取pdf文件,通过词向量寻找相关词语

    1. 什么是Word2vec 对于自然语音处理而言,首先要做的就是将文字转换为计算机能看懂的数字,也就是说,将词语进行数字化. (1)one-hot编码,比较常用的一种编码方式,又叫独热编码. 对于一 ...

  6. mac怎么合并两个容器_PDF怎样合并?在Mac上合并PDF文件的最佳方法

    在保存编辑内容的同时合并PDF文件可能是一个大问题.合并大文件时,"预览"不涵盖展平,并且会使系统变慢.这些和其他问题可能会迫使您寻找更好的选择.让我们探索在Mac上组合PDF以涵 ...

  7. pdf上传及预览;file上传pdf文件及预览;vue上传pdf文件及预览;vue-pdf预览pdf文件

    需求:上传pdf文件,并点击可以打开预览.使用input的file功能即可完成,预览只需要跳转到pdf的url地址即可.还可以配合vue-pdf直接预览,点击看这篇. 以下代码可直接复制使用!!!有效 ...

  8. java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件

    简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库.开源的 iText 库使得 PDF 的创建变得轻松易行.本文介绍了 iText 并提供了一个使用它从 Java 技术应用 ...

  9. php上传pdf文件错误,php上传pdf文件,一些特殊字符丢失

    php上传pdf文件,上传到服务器上发现pdf文件里面一些特殊字符不显示了,将pdf文件压缩成zip文件上传后,提示压缩包损坏 求高手解答 回复讨论(解决方案) php上传文件时,不会破坏文件内容.这 ...

最新文章

  1. ORA-01113 file 1 needs media recovery
  2. 机械秒表的使用方法_瓦楞纸箱防水性能检测方法
  3. mahout0.7 示例运行纪实
  4. JSP页面报错:“Uncaught SyntaxError: Unexpected token ”
  5. 一个对于小数四舍五入的算法C语言版
  6. 阿里云申请免费ssl证书并配置nginx
  7. java oracle 建表语句_oracle得到建表语句
  8. ussd代码大全_魅族ussd补电代码 | 手游网游页游攻略大全
  9. 为什么选择Mapabc
  10. 显卡驱动与cuda、cudnn之间的关系
  11. Php扫码签到功能怎么实现,扫码签到常用方法_云分组小程序
  12. 时下最热门的五款微信编辑器使用评测
  13. TPTP—详细说明讲解
  14. 日语 假名对应的汉字来源
  15. linux中|管道符的作用
  16. Vue TypeError: Cannot set properties of undefined (setting ‘msg‘) at eval (App.vue?91a0:25:1)
  17. ubuntu安装极点五笔并支持大字符集
  18. ECSHOP搜索引擎神器SEO秒收录插件,ECSHOP百度ping收录功能
  19. mysql 管理数据库和管理表笔记
  20. 万达体育走到新的十字路口

热门文章

  1. UVA 11992 - Fast Matrix Operations(段树)
  2. [转]Java Web基础——Action+Service +Dao三层的功能划分
  3. postgresql数据类型之数组类型
  4. Oracle 使用DBMS_SCHEDULER创建定时任务
  5. 使用 Raspberry Pi 远程桌面
  6. Dvsdk 下的CMEM学习
  7. 如何在XSLT中将字符串转换为大写或小写形式
  8. WinFormreportViewer报表[矩阵]的使用(一)(附源码示例) 之配餐系统的开发
  9. 软件设计方法和设计决策
  10. Yahoo,希望你和微软Bing能过的幸福