Сжатие PDF Java - PullRequest
       37

Сжатие PDF Java

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

Я пытаюсь оптимизировать размер файла PDF, созданного нашей системой на основе Java.Моя первая мысль - уменьшить размер изображений на них, преобразовав их в оттенки серого.Знаете ли вы какой-либо другой инструмент, предпочтительно библиотеку Java или компонент, который можно использовать для документов PDF, чтобы уменьшить размер?

Ответы [ 6 ]

2 голосов
/ 10 марта 2011

Вы можете использовать setFullCompression на PdfStamper, чтобы выкачать PDF.

2 голосов
/ 10 марта 2011

Если ваши входные изображения имеют большие размеры, я бы посоветовал вам уменьшить их, прежде чем добавлять их в файл PDF.В чистой Java вы можете сделать это, если хотите что-то вроде

Image image; // Say you have loaded the larger image
image = image.getScaledInstance(width, height, 0);  // where width and height is something like 640x480
// Now save the image to some temporary file and use the shrunk version in your pdf file.

Будьте осторожны, чтобы сохранить соотношение сторон.Проверьте ImageIO API найдено в Java 1.4.2+ для сохранения файла JPEG.

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

В Acrobat Pro 9 & X есть функция «космического аудита», которая сообщает вам, какие части вашего PDF занимают больше всего места, поэтому вы не тратите свое время на исправление тех вещей, которые не сломаны.

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

PdfSmartCopy будет объединять идентичные потоки при импорте различных страниц. Это будет не объединенный набор шрифтов. Я не знаю ни одного программного обеспечения PDF, кроме Adobe, которое делает.

0 голосов
/ 11 марта 2011

Если ваши изображения состоят из векторов, то есть, если вы используете Graphics2D для рисования изображения, как в случае, например, с. Графики JFreeChart, вы можете добавить их в виде изображений iText, и они будут нарисованы как векторы в PDF. Это значительно уменьшает размер по сравнению с бинарными изображениями.

Кроме того, вы можете либо читать и писать в формате PDF, либо во время генерации масштабировать изображение с помощью Java ImageIO API.

0 голосов
/ 10 марта 2011

Вы можете уменьшить размер файла PDF, используя функцию, называемую «поток объекта». Поток объектов не поддерживается iText, но вы можете постобработать PDF, сгенерированный с помощью некоторого инструмента, такого как PDFLeo. См. http://mdn.morovia.com/manuals/pdfleo-1/PDF-Optimization-Size-Reduction.php для получения дополнительной информации.

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

0 голосов
/ 10 марта 2011

Сжатые PDF-файлы? Если нет, вы можете использовать iText для чтения PDF и записи сжатого PDF.

...