【问题标题】:Partly loading a PDF into memory将 PDF 部分加载到内存中
【发布时间】:2012-02-16 09:13:05
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: ios pdf memory core-graphics


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-02-21
        • 1970-01-01
        • 2015-03-10
        • 1970-01-01
        • 2013-07-07
        • 1970-01-01
        • 2012-05-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多