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

Split and merge pdf files using PDFBOX produces large file

我有这个 pdf 格式的大型打印文件,其中包含 5544 页,大小约为 36mb。该文件由 MS Word 2010 创建,每个 letter/document.

仅包含文本和徽标

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

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

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

知道如何减小字母文件和最终打印文件的大小吗? 似乎 PDFBox 只是在最终打印文件中附加了每个字母,而不是创建一个新的 pdf 文档。

只是在测试阶段,所有文档才合并到最终打印文件中,部分文档将通过电子邮件发送。

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

pdfinfo Original.pdf Title: Printfile Author: Claus Hjort Bube Creator: Microsoft® Word 2010 Producer: Microsoft® Word 2010 CreationDate: Fri May 19 12:16:34 2017 CEST ModDate: Fri May 19 12:16:34 2017 CEST Tagged: yes UserProperties: no Suspects: no Form: none JavaScript: no Pages: 5544 Encrypted: no Page size: 595.32 x 841.92 pts (A4) Page rot: 0 File size: 36092281 bytes Optimized: no PDF version: 1.5

pdfinfo PDFBox.pdf Title: Printfile Author: Claus Hjort Bube Creator: Microsoft® Word 2010 Producer: Microsoft® Word 2010 CreationDate: Fri May 19 12:16:34 2017 CEST ModDate: Fri May 19 12:16:34 2017 CEST Tagged: no UserProperties: no Suspects: no Form: none JavaScript: no Pages: 5544 Encrypted: no Page size: 595.32 x 841.92 pts (A4) Page rot: 0 File size: 396622354 bytes Optimized: no PDF version: 1.4

pdfinfo SAMBox.pdf Creator: Sejda Console 3.2.17 Producer: SAMBox 1.1.8 (www.sejda.org) ModDate: Tue Jul 11 23:34:33 2017 CEST Tagged: no UserProperties: no Suspects: no Form: none JavaScript: no Pages: 5544 Encrypted: no Page size: 595.32 x 841.92 pts (A4) Page rot: 0 File size: 378779436 bytes Optimized: no PDF version: 1.7

这听起来可能令人难过,但却是正确的。拆分时,每个文件都会获得所需的资源(例如字体和公司徽标图形)。合并回来时,PDFBox 不知道这些在整个文档中可能是相同的,所以现在这些重复了很多。

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