我正在使用 Apache Fop 1.0 创建 PDF 文档。默认情况下,它使用 FlateFilter 来压缩内容。FOP 在封面下使用 DeflaterOutputStream DEFAULT_COMPRESSION。我还没有找到将其设置为 BEST_COMPRESSION 的任何可能性。
pdf 包含一些由 Barcode4j 2.1 生成的条形码。正如我看到生成的图像非常大,我还没有找到任何信息如何压缩它:
<fo:instream-foreign-object height="25pt" width="101pt">
<barcode:barcode xmlns:barcode="http://barcode4j.krysalis.org/ns" message="xxxxxxxx">
<barcode:code128>
<barcode:height>37pt</barcode:height>
<barcode:module-width>0.9pt</barcode:module-width>
<barcode:human-readable>
<barcode:placement>none</barcode:placement>
</barcode:human-readable>
</barcode:code128>
</barcode:barcode>
</fo:instream-foreign-object>
如果我生成 PDF(在 fop 中使用 flate 并使用上面编写的条形码注入),那么我可以使用简单的 winzip 将 pdf 大小减少 30%。
有没有办法通过我的过程使用更好的压缩算法?pdf 应该可以在 Acrobat Reader 中打开,因此不能在服务器端压缩并在客户端解压缩。
我认为barcode4j生成的图像可以被压缩,但我不知道该怎么做。
Update1:生成的条形码似乎太大了。pdf 包含 3 页和 3 个条形码。3 条码大约占整个 pdf 大小的 50%。
谢谢
佐尔坦