簡體   English   中英

使用Java進行PDF,barcode4j壓縮

[英]PDF, barcode4j compression with java

我正在使用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中的flat並使用上面編寫的條形碼注入),則可以使用簡單的Winzip將PDF大小減小30%。

有沒有辦法在我的過程中使用更好的壓縮算法? pdf應該可以在Acrobat Reader中打開,因此不能選擇在服務器端壓縮並在客戶端解壓縮。

我認為條形碼4j生成的圖像可以壓縮,但是我看不到該怎么做。

Update1:​​生成的條形碼似乎太大。 pdf包含3頁和3個條形碼。 3條碼約占整個pdf尺寸的50%。

謝謝

佐爾坦

默認壓縮設置與最大壓縮設置之間沒有太大差異。 如果您了解ZLib,則可以編寫一些測試代碼來查看-可能比您預期的要少得多。 之所以將尺寸減小30%,是因為對整個文件進行了壓縮-在PDF中,僅流被壓縮。

您可以通過使用壓縮的對象流來大幅減小大小。 FOP不支持它,但是許多工具都支持。 如果需要更多信息,請參見此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM