Сжатие PDF, barcode4j с использованием Java - PullRequest
2 голосов
/ 28 февраля 2011

Я использую 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.

Спасибо

Золтан

1 Ответ

1 голос
/ 03 марта 2011

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

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

...