用java进行PDF、barcode4j压缩

用java进行PDF、barcode4j压缩,java,pdf,barcode,apache-fop,Java,Pdf,Barcode,Apache Fop,我正在使用ApacheFop1.0创建PDF文档。默认情况下,它使用FlateFilter压缩内容。FOP在封面下使用DeflaterOutputStream默认_压缩。我没有发现任何可能将其设置为最佳压缩 pdf包含一些条形码以及由条形码4J 2.1生成的条形码。正如我看到的,生成的图像非常巨大,我没有找到任何关于如何压缩它的信息: <fo:instream-foreign-object height="25pt" width="101pt"> <barcode:bar

我正在使用ApacheFop1.0创建PDF文档。默认情况下,它使用FlateFilter压缩内容。FOP在封面下使用DeflaterOutputStream默认_压缩。我没有发现任何可能将其设置为最佳压缩

pdf包含一些条形码以及由条形码4J 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>

37磅
0.9磅
没有一个
如果我生成pdf(在fop中使用flate并使用上面写的条形码注入),那么我可以使用simple winzip将pdf大小减少30%

在我的过程中有没有办法使用更好的压缩算法? pdf应该可以在AcrobatReader中打开,因此不能在服务器端压缩,也不能在客户端解压

我认为barcode4j生成的图像可以被压缩,但我看不出该怎么做

更新1: 生成的条形码似乎太大。pdf包含3页和3个条形码。3条形码大约占整个pdf大小的50%

谢谢


Zoltan

默认压缩设置和最大值之间没有太大区别。如果您了解ZLib,您可以编写一些测试代码来查看-可能比您预期的要少得多。之所以缩小30%,是因为压缩应用于整个文件——在PDF中,只有流被压缩


通过使用压缩的对象流,可以大大减小大小。FOP不支持它,但许多工具支持它。查看是否需要更多信息。

PDF中的条形码应该非常小,因为它们可以以矢量图形的形式显示。Barcode4j能够生成EPS,也许有一种方法可以将其转换为PDF。那会节省很多空间。谢谢。问题可能出在条形码4J上。3个条形码是15千字节。