当前位置: 首页 > 知识库问答 >
问题:

PDFbox:使用非常大的PDF。

沙柏
2023-03-14

我正在处理一些非常大的PDF,一些超过7GB的大小。PDF有多达20,000页和许多全页彩色图像。我想使用PDFBox来处理PDF,但由于尺寸太大,当我试图打开PDF时,我会得到FMemoryError。

我正在使用PDFBOX-APP-1.6.0版本,在Windows7上使用Intellij、Java6。

首先,我尝试编写一个简单的程序,在PDDocument中打开PDF,然后将每一页转到另一个PDDocument:http://ideone.com/arkhb

接下来,我尝试使用PDFBox CopyDoc示例。

这两个示例都耗尽了内存。

我假设这是因为PDFBox试图将整个文档读入内存。有办法让它一次只打开一页吗?我知道这将是一个较慢的处理,但目前我无法处理任何东西。

共有1个答案

姚树
2023-03-14

在2.0.*版本中,打开PDF,如下所示:

PDDocument doc = PDDocument.load(file, MemoryUsageSetting.setupTempFileOnly());

这将设置缓冲内存使用,仅使用大小不受限制的临时文件(无主存)。

更新17.4.2018:更多节省内存的技巧在常见问题解答中描述。在进行渲染时,使用pdfrenderer.setsubsamplingAllowed(true)进行子采样(跳过像素行/行),这是2.0.9以来的活动。这为带有巨大图像文件的PDF文件节省了空间。

 类似资料:
  • 问题内容: 我想使用命令 将一个PDF拆分为许多其他PDF。但是我发现有一个问题:拆分的PDF为“ ActiveMQ In Action(Manning-2011).pdf”,它的大小为14.1MB。但是当我跑步时 每个PDF都大于79MB!我该如何预防? 问题答案: 这是PDFBox 2.0.2中的一个已知错误。拆分在2.0.1中工作正常,在2.0.3中又可以工作。“错误的”代码已经恢复。问题的

  • 我搜索了数据库和食谱,但似乎找不到正确的答案。我有一个非常简单的python代码,它总结了一个范围内的自我权力。我需要这个非常非常大的数字的最后十位,我已经尝试了get上下文(). prec,但是我仍然达到了极限。 代码如下: 我怎么能看到这些美丽的数字?它在我的四核上打印速度相对较快。这只是为了给ProjectEuler带来乐趣,问题#48,请不要破坏者。我不想要解决方案,也不想让工作为我完成,

  • 问题内容: 抱歉,很长的帖子! 我有一个包含约30个表的数据库(InnoDB引擎)。这些表中只有两个表,即“ transaction”和“ shift”非常大(第一个表有150万行,而shift有23000行)。现在一切正常,我对当前的数据库大小没有任何问题。 但是,我们将有一个类似的数据库(相同的数据类型,设计等),但数据库更大,例如,“事务”表将具有约 10亿条记录 (每天约有 230 万笔交

  • 我们有生成PDF文档的系统(使用Ecrion引擎)。我们正在使用时代字体。现在需要文档存档,因此我们正在从PDF切换到PDF/A,并将字体从Times 更改为Times New Roman(相同的字体)。这就是问题出现的地方 - 每个PDF / A也包括使用的字体(因为PDF / A是用于存档的PDF,因此它与字体一起出现)。问题是每个文档现在都包含“Times New Roman”,“Times

  • 我正在使用此方法打印一个大字符串: 这很好,但Logcat打印的字符串太多,我无法在Logcat中看到字符串的所有内容。我只能看到最近的。你能告诉我如何在Logcat中查看所有Logcat日志吗?或者你能告诉我一种将所有日志打印到文件或类似文件的方法吗?谢谢

  • 我有一个非常大的不可变的密钥集,不适合存储在内存中,还有一个更大的引用列表,必须只扫描一次。如何在RAM中完成标记阶段?我确实有一个可能的解决方案,稍后我会写下来作为答案(不想破坏它),但也许还有其他我没有想到的解决方案。 我将试图重申这个问题,使其更“真实”: 你在Facebook工作,你的任务是找出哪些用户从未创建过带有表情符号的帖子。你所拥有的只是活动用户名列表(大约20亿),以及帖子列表(