PDF, сжатие barcode4j с 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-файлы (используя flate в fop и используя инъекции штрих-кода, описанные выше), то я могу уменьшить размер PDF-файла с помощью простого WinZip на 30 процентов.

Есть ли способ использовать лучший алгоритм сжатия в моем процессе? PDF-файл должен открываться в Acrobat Reader, поэтому его невозможно заархивировать на стороне сервера и разархивировать на стороне клиента.

Я думаю, что изображение, сгенерированное barcode4j, может быть сжато, но я не понимаю, как это сделать.

Обновление 1: сгенерированный штрих-код кажется слишком большим. pdf содержит 3 страницы и 3 штрих-кода. Штрих-код 3 составляет около 50% от всего размера PDF.

Спасибо

Золтан


person HamoriZ    schedule 28.02.2011    source источник
comment
Штрих-коды в PDF должны быть довольно маленькими, так как они могут быть представлены в виде векторной графики. Barcode4j может создавать EPS, возможно, есть способ преобразовать его в PDF. Это должно сэкономить массу места.   -  person Joachim Sauer    schedule 28.02.2011
comment
Спасибо. Проблема может быть с barcode4j. 3 штрих-кода составляют 15 килобайт.   -  person HamoriZ    schedule 28.02.2011


Ответы (1)


Нет большой разницы между параметром сжатия по умолчанию и максимальным. Если вы знаете ZLib, вы можете написать тестовый код, чтобы увидеть — возможно, гораздо меньше, чем вы ожидали. Причина того, что вы получаете на 30% меньше размера, заключается в том, что сжатие применяется ко всему файлу — в PDF сжимаются только потоки.

Вы можете существенно уменьшить размер, используя сжатые потоки объектов. FOP не поддерживает его, но многие инструменты поддерживают. См. здесь, если вам нужна дополнительная информация. .

person cuteCAT    schedule 03.03.2011