iOS提高PDF渲染速度

mbm*_*414 3 pdf iphone render ipad ios

我正在编写一个管理用户文档的应用程序,并(最终)发布通过iPhone/iPad上的Web服务提供的PDF文件.这几乎是完全扫描的PDF文件,它们似乎真的让iOS设备陷入困境.

我想出的第一个解决方案是在UIWebView中简单地托管PDF.这对于"生成的"PDF文件非常有效,但不适用于扫描的PDF文件(我猜这里的区别是光栅与矢量?).

我的下一个解决方案是实现一个UIDocumentInteractionController,据说这会增加快速性.我可以报告它确实比UIWebView更快,但它仍然慢得令人无法接受,即使在2页的小PDF文件中也是如此.(另一方面,"自动打开另一个应用程序"功能,以及内置打印是超级光滑!)

我已经阅读了关于QuickLook框架的帖子或2,我打算调查一下,但我也偶然发现了一些关于CGPDFDocument类等的帖子.那些似乎对文档导航有更好的控制(la xPdf),但我不知道从哪里开始.另外,我甚至不确定它是否为我正在做的事情提供了性能优势.

那么,第一个问题:在iPhone/iPad上渲染扫描PDF文件的最快方法是什么?

第二个问题:扫描的PDF文件是由我公司生成的,因此我可以控制PDF生成设置.有谁知道哪些设置可以提高基于图像的PDF文件的加载速度?

谢谢!

(顺便说一下:我今天已连续19个小时编码,所以如果我漫无目的或没有意义,请原谅我!:))

Kem*_*kin 6

最快的解决方案是使用CGPDFDocument类编写自己的自定义pdf解析器和渲染框架.超高速pdf渲染的秘诀在于使用以下技术:

  • 将全尺寸页面离线渲染到图像.
  • 仅在某个缩放级别后激活CATiledLayer绘图.当用户以默认缩放级别查看您的pdf页面时,无需激活CATiledLayer绘图,因为它非常昂贵.只显示已经离屏的渲染图像.当用户开始放大时,您可以激活CATiledLayer.
  • 使用智能算法缓存屏幕外渲染的pdf页面.您可以将上一页和下一页缓存为离屏渲染图像.
  • 在快速设备(iPhone 4或更高版本以及iPad 2或更高版本)上,您可以启动后台作业,将所有页面移出屏幕并将其保存到磁盘.
  • 缓存定期使用的有关pdf页面的信息,如:原始矩形,旋转,旋转矩形等.
  • 您将使用大量CGPDFPageRef对象.重要的是要知道这将大大增加内存使用量.一个小技巧是在收到内存警告时关闭并重新打开CGPDFDocumentRef对象.

我在PDFTouch SDK for iOS中使用了上述所有技术,这是我开发的一个快速pdf渲染框架!