相关疑难解决方法(0)

从pdf数据中提取单个页面(或页面范围)而不加载整个pdf(有时需要太多RAM)

PDFKit在swift中使用,您可以使用PDFDocument打开pdf文件.这很简单,效果很好.但我正在构建一个适合我需求的自定义pdf查看器(适用于漫画书pdf),我遇到了一个问题.在查看器中,我不需要将整个pdf文件存储在内存中.我一次只需要几页.

此外,pdfs仅包含图像.没有文字或任何东西.

实例化a时PDFDocument,整个pdf数据被加载到内存中.如果你有非常庞大的pdf文件(超过1GB),这不是最佳的(并且可能会在某些设备上崩溃).据我所知,PDFKit中没有办法只加载pdf文档的部分内容.

我能做些什么吗?我还没有找到一个可以做到这一点的swift/obj-c库(虽然我真的不知道搜索它的正确关键字).

我的解决方法是预处理pdf并使用在.documents director(或类似)中将每个页面保存为图像FileManager.这将导致大量文件,但会解决内存问题.不过,我不确定我喜欢这种方法.

更新:

所以我做了@Prcela和@Sahil Manchanda提出的建议.它似乎现在正在发挥作用.

@yms:嗯,确实可能是个问题.当只有图像时,这甚至会发生吗?在pdf中没有任何其他内容.

@ Carpsen90:它们是本地的(保存在文档目录中).

编辑:我没有接受下面的答案,或给它赏金.这是自动的.它没有解决问题.它仍然将整个PDF加载到内存中!

pdf ios swift

12
推荐指数
1
解决办法
931
查看次数

是否可以在iphone中以编程方式将多个pdf文件合并为一个pdf文件?

是否可以在iphone中以编程方式将多个pdf文件合并为一个pdf文件.我已经从程序的不同部分创建了单独的页面,现在需要将它们合并到一个文件中

pdf iphone ios

8
推荐指数
2
解决办法
4604
查看次数

如何在下载时部分显示 PDF 文件?

根据PDF 1.7 规范,第 90 页,第 3.4 节:

前面的部分描述了单个对象的语法。本节介绍如何在 PDF 文件中组织对象以实现高效的随机访问和增量更新。规范的 PDF 文件最初由四个元素组成(见图 3.2):

  • 标识文件符合的 PDF 规范版本的单行标题

  • 包含构成文件中包含的文档的对象的主体

  • 包含有关文件中间接对象信息的交叉引用表

  • 提供交叉引用表的位置和文件正文中某些特殊对象的位置的预告片

基本上,该结构具有标题,然后是正文内容,然后是交叉引用表,最后是给出外部参照表位置的尾部。这里的关键部分是trailerxref表位于文件末尾,该xref表包含正文内容的相关元数据(主要是 10 位字节偏移量)。

鉴于外部参照表本身位于PDF 文件的最末尾

  • 我的浏览器(谷歌浏览器)如何在整个文件下载完成之前部分显示 PDF 文件(前一百页左右)?

查看我部分下载的 PDF 文件的屏幕截图:

部分下载的PDF文件

pdf random-access cross-reference

5
推荐指数
1
解决办法
1542
查看次数

标签 统计

pdf ×3

ios ×2

cross-reference ×1

iphone ×1

random-access ×1

swift ×1