gpt4 book ai didi

iphone - iOS 提高 PDF 渲染速度

转载 作者:可可西里 更新时间:2023-11-01 06:22:35 25 4
gpt4 key购买 nike

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

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

我的下一个解决方案是实现 UIDocumentInteractionController,据说这会增加活泼度。我可以报告说它确实确实比 UIWebView 快,但它仍然慢得令人无法接受,即使是在较小的 2 页 PDF 文件上也是如此。 (附带一提,“在另一个应用程序中自动打开”功能以及内置打印功能非常棒!)

我读过一两篇关于 QuickLook 框架的文章,我打算研究一下,但我也偶然发现了一些讨论 CGPDFDocument 类等的文章。这些似乎可以更好地控制文档导航(a la xPdf),但我不知道从哪里开始。另外,我什至不确定它是否为我正在做的事情提供了性能优势。

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

第二个问题:扫描的PDF文件是我公司生成的,所以我对PDF生成设置有一定的控制权。有人知道哪些设置可以提高基于图像的 PDF 文件的加载速度吗?

谢谢!

(顺便说一下:我今天连续写了 19 个小时的代码,所以如果我胡说八道或没有理解,请原谅我!:))

最佳答案

最快的解决方案是使用 CGPDFDocument 类编写您自己的自定义 pdf 解析器和呈现框架。超快 pdf 渲染的秘诀在于使用如下技术:

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

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

关于iphone - iOS 提高 PDF 渲染速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6165999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com