使用 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 一步创建邮件文件和最终打印文件,即不创建合并的单个文件返回。
我有这个 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 一步创建邮件文件和最终打印文件,即不创建合并的单个文件返回。