Я использую 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-файлы (используя flate в fop и используя инъекции штрих-кода, написанные выше), я мог бы уменьшить размер pdf с помощью простого winzip на 30 процентов.
Есть ли способ использовать лучший алгоритм сжатия моим процессом?
PDF должен быть открыт в Acrobat Reader, поэтому нельзя архивировать на стороне сервера и разархивировать на стороне клиента.
Я думаю, что сгенерированное изображение barcode4j может быть сжато, но я не вижу, как это сделать.
Update1:
Сгенерированный штрих-код кажется слишком большим. PDF содержит 3 страницы и 3 штрих-кода. 3 штрих-кода составляет около 50% от всего размера PDF.
Спасибо
Золтан