使用PDFBOX拆分和合并pdf文件会生成大文件

使用PDFBOX拆分和合并pdf文件会生成大文件,pdf,pdfbox,Pdf,Pdfbox,我有一个pdf格式的大打印文件,包含5544页,大小约为36mb。该文件由MS Word 2010创建,每个字母/文档上仅包含文本和徽标 我将其拆分为5544个文件,并根据关键字合并回2770个字母。每个字母的大小约为140-145kb 当我把所有的信件合并成一个新的pdf打印文件,仍然包含5544页时,文件的大小增加到396mb 所有文本提取、拆分和合并都是通过从PHP调用ApachePDFBox命令行工具来执行的,但从控制台运行时结果是相同的 你知道如何减少信件和最终打印文件的大小吗? 看起

我有一个pdf格式的大打印文件,包含5544页,大小约为36mb。该文件由MS Word 2010创建,每个字母/文档上仅包含文本和徽标

我将其拆分为5544个文件,并根据关键字合并回2770个字母。每个字母的大小约为140-145kb

当我把所有的信件合并成一个新的pdf打印文件,仍然包含5544页时,文件的大小增加到396mb

所有文本提取、拆分和合并都是通过从PHP调用ApachePDFBox命令行工具来执行的,但从控制台运行时结果是相同的

你知道如何减少信件和最终打印文件的大小吗? 看起来PDFBox只是在最终打印文件中添加了每个字母,而不是创建了一个新的pdf文档

只有在测试阶段,所有文档才会合并到最终的打印文件中,一些文档将通过电子邮件发送

我也尝试过SAMBox(PDFBox的分支),但结果几乎相同:

pdfinfo Original.pdf
标题:打印文件
作者:Claus Hjort Bube
创建者:Microsoft®Word 2010
制作人:Microsoft®Word 2010
创作日期:2017年5月19日星期五12:16:34 CEST
日期:2017年5月19日星期五12:16:34 CEST
是的
用户属性:否
嫌疑人:没有
表格:无
JavaScript:没有
页码:5544
加密:没有
页宽:595.32 x 841.92分(A4)
页码:0
文件大小:36092281字节
答:没有
PDF版本:1.5

pdfinfo PDFBox.pdf
标题:打印文件
作者:Claus Hjort Bube
创建者:Microsoft®Word 2010
制作人:Microsoft®Word 2010
创作日期:2017年5月19日星期五12:16:34 CEST
日期:2017年5月19日星期五12:16:34 CEST
答:没有
用户属性:否
嫌疑人:没有
表格:无
JavaScript:没有
页码:5544
加密:没有
页宽:595.32 x 841.92分(A4)
页码:0
文件大小:396622354字节
答:没有
PDF版本:1.4

pdfinfo SAMBox.pdf
创建者:Sejda控制台3.2.17
制作人:Sambox1.1.8(www.sejda.org)
日期:2017年7月11日星期二23:34:33 CEST
答:没有
用户属性:否
嫌疑人:没有
表格:无
JavaScript:没有
页码:5544
加密:没有
页宽:595.32 x 841.92分(A4)
页码:0
文件大小:378779436字节
答:没有
PDF版本:1.7

听起来可能很悲伤,但这是正确的。拆分时,每个文件都会获得所需的资源(例如字体和公司徽标图形)。当合并回PDFBox时,PDFBox不知道这些文件在整个文档中可能是相同的,因此这些文件现在被大量复制


我为您看到的唯一解决方案是使用PDFBox java API一步创建邮件文件和最终打印文件,即不创建合并回来的单个文件。

这确实可能发生。在原始文件中,最有可能的资源是共享的,例如,所有页面所引用的图像只有一个副本。分割文件时,每个部分PDF都会获得每个共享资源的自己副本。因此,在再次合并这些部分PDF之后,每个页面都有自己的以前共享资源的副本。这会使文件大小爆炸。不幸的是,PDFBox(尚未?)没有智能合并功能来识别相同的资源并将其缩减为单个副本。因此,与其拆分原始PDF并将拆分的页面重新组合在一起,不如始终从原始文件开始,并通过删除所有不需要的页面来缩减它。另请参阅