首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDF,用java进行barcode4j压缩

PDF,用java进行barcode4j压缩
EN

Stack Overflow用户
提问于 2011-02-28 16:53:41
回答 1查看 1.5K关注 0票数 2

我正在使用Apache Fop 1.0创建PDF文档。默认情况下,它使用FlateFilter来压缩内容。FOP在幕后使用DeflaterOutputStream DEFAULT_COMPRESSION。我还没有发现将其设置为BEST_COMPRESSION的任何可能性。

pdf还包含一些由Barcode4j 2.1生成的条形码。正如我所看到的,生成的图像相当大,我还没有找到任何关于如何压缩它的信息:

代码语言:javascript
复制
<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%。

谢谢

佐尔坦

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-03 10:52:38

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

您可以通过使用压缩对象流来大幅减小大小。FOP不支持它,但许多工具都支持它。如果您需要更多信息,请参阅here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5139835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档