Linux PDF / Оптимизация постскриптума - PullRequest
6 голосов
/ 17 апреля 2010

Итак, у меня есть система отчетов, построенная с использованием Java и iText. Шаблоны PDF создаются с использованием Scribus. Java-код объединяет данные в документе с помощью iText. Затем файлы копируются в общую папку NFS, и сценарий BASH печатает их.

Я использую acroread, чтобы преобразовать их в PS, а затем lpr для PS.

Приложение FOSS pdftops ужасно неэффективно.

Моя главная проблема в том, что PDF-файлы, созданные с помощью iText / Scribus, очень большие. И недавно я столкнулся с проблемой, когда acroread рвёт, потому что он достигает 4 Гб памяти в больших (более 300 страниц) документах. (Adobe мучительно медленно обновляет содержимое до 64 бит).

Теперь я могу использовать Adobe Reader в Windows и использовать параметр «Уменьшить размер файла» или как его там называют, и это значительно (> 10 раз) уменьшает размер PDF (удаляет много метаданных о полях формы и так выглядит ) и создает PDF-файл, который в основном представляет собой изображение для печати. ​​

Мой вопрос: знает ли кто-нибудь о хорошем решении / программе для того, чтобы сделать что-то похожее на Linux. В идеале это оптимизировало бы PDF, уменьшило бы размер и уменьшило бы сложность PS, чтобы принтер мог печатать быстрее, поскольку для печати страницы требуется около 15-20 секунд.

Ответы [ 2 ]

5 голосов
/ 06 августа 2012

Чтобы уменьшить размер файла PDF, используйте pdfsizeopt , программное обеспечение, которое я разрабатываю. pdfsizeopt работает в Linux, Mac OS X, Windows (и, возможно, в других системах).

pdfsizeopt имеет много зависимостей, поэтому установка может быть немного громоздкой (около 10 минут вашего времени). Я работаю над тем, чтобы упростить установку.

Если вам нужно что-то быстро, вы можете попробовать одну из его зависимостей: Multivalent tool.pdf.Compress, которая является чистым инструментом Java.

Получить Multivalent20060102.jar , установить Java и запустить

java -cp Multivalent20060102.jar tool.pdf.Compress input.pdf

Существуют ограничения на то, что может gs -sDEVICE=pdfwrite:

  • он не может генерировать потоки внешних ссылок (поэтому PDF будет больше, чем необходимо)
  • он не может генерировать потоки объектов (поэтому PDF будет больше, чем необходимо)
  • он не дедуплицирует изображения или другие объекты (т. Е. Если одно и то же изображение появляется несколько раз во входном PDF, gs создает копию в выходных данных для каждого вхождения)
  • он излучает изображения неоптимально
  • повторная выборка изображений с низким разрешением
  • иногда в PDF не указываются гиперссылки
  • он не может конвертировать некоторые конструкции (поэтому выходной PDF может визуально отличаться от входного)

Ни pdfsizeopt, ни Мультивалентные tool.pdf.Compress не страдают от этих ограничений.

4 голосов
/ 20 апреля 2010
gs \
  -dCompatibilityLevel=1.4 \
  -dPDFSETTINGS=/screen \
  -dNOPAUSE \
  -dBATCH \
  -sDEVICE=pdfwrite \
  -sOutputFile=output.pdf \
   input.pdf

Ghostscript, кажется, работает для большинства в этом вопросе. У меня сейчас другая проблема с ghostscript, искажающим встроенные шрифты, но я открою для этого новый вопрос.

...