部分将PDF加载到内存中

时间:2012-02-16 09:13:05

标签: ios pdf memory core-graphics

有没有办法只部分加载(大)PDF文件?所以,让我们说:不要加载完整的PDF文件,而只加载前5页。

因为我实际上正在处理大型PDF文件(30 - 50 MB),当我调用CGPDFRetain整个文档时,所以完整的30-50 MB保留在内存中。

有人可以帮助我吗?是否可以在不首先将完整的PDF加载到内存中的情况下从PDF中获取单个页面?

有人可以帮我解决这个问题吗?

更新: 由于我的应用需要支持离线访问,因此应从本地存储加载PDF。

更新2:我现在尝试了不同的策略,但应用程序仍处于内存边缘,因为我只需一步即可将PDF完全加载到内存中。但不管怎样,它应该可以支持大型PDF文件,不应该吗?

2 个答案:

答案 0 :(得分:1)

我不知道CGPDFRetain是什么,所以我可能完全没有了。 PDF的设计方式使您只需要部分内容即可正确呈现。有一种称为“Web优化”的PDF,其对象以特殊方式排列。每个Web服务器都能够发送文档的字节范围,这两种机制允许部分加载PDF。

您应该详细说明加载PDF的位置。

答案 1 :(得分:0)

不是这样的。 CGPDFDocument指向您的磁盘空间并将部分缓存在内存中,但从不整个文档。

CGPDFDocument对内存过于贪婪有一些问题,但在这种情况下只需破坏并重新创建CGPDFDocument就可以了。否则,在CGPDFDocument分配了太多内存后,您的应用可能会崩溃。