Какое лучшее решение для сжатия PDF с pdfbox? - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть PDF-файл для сохранения, но сначала я должен сжать его с наилучшим возможным качеством и использовать открытый исходный код (pdfbox).

Итак, до сих пор я получаю все ресурсы типов изображений, сжимаю их и помещаю обратно в pdf, но степень сжатия слишком низкая. Это всего лишь фрагмент кода, в котором я назначаю параметры сжатия:

 PDImageXObject imageXObject = (PDImageXObject) pdxObject;

        ImageWriter imageWriter = ImageIO
                .getImageWritersByFormatName(FileType.JPEG.name().toLowerCase()).next();

        ImageWriteParam imageWriteParam = imageWriter.getDefaultWriteParam();
        imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
        imageWriteParam.setCompressionQuality(COMPRESSION_FACTOR);

Существует некоторый другой механизм для оптимизации PDF, так что пока только сжатие изображений показывает немного плохой результат.

1 Ответ

1 голос
/ 29 апреля 2019

на сжатие. Действительно, изображения, вероятно, являются крупнейшими виновниками.

Изображения: Размер изображения, ширина и высота, также влияют на размер файла, а не только на качество изображения с потерями (ваш COMPRESSION_FACTOR). В общем, я бы начал с сжатия файла JPEG вне PDF. Тогда вы можете найти лучшее сжатие, которое все еще показывает и печатает (!) Адекватно. Фотографии JPEG, векторная графика (например, диаграммы) лучше всего сделать с помощью Encapsulated PostScript.

Повторяющиеся изображения, такие как логотипы страниц, не должны храниться повторно. Оптимизация здесь - потоковое интернет.

Шрифты: Шрифты по умолчанию не требуют места, полные шрифты требуют больше места (например, для PDF-файлов с формами). Встраиваемые шрифты являются третьей возможностью, загружая только те символы, которые им нужны.

Собственные двоичные данные в формате PDF: Текст и другие части могут быть сжаты, сжаты с использованием только 7-битного ASCII и дополнительно сжаты с использованием всех байтов. Опция ASCII немного устарела.

В настоящее время я не использую pdfbox, поэтому я оставляю это вам.

...