2010-04-16 4 views
6

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

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

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

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

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

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

+0

Scribus должен создать хороший PDF, iText также очень уважаем. pdftops, OTOH, в основном испускает векторный список в PostScript, что является самым худшим возможным способом. зачем вам расписываться? PDF намного легче обрабатывать – Javier

+0

Я на самом деле не использую pdftops, я использую acroread. и я использую PS для печати на принтер, который не поддерживает печать PDF напрямую. –

+0

вы можете использовать CUPS для печати PDF, заботясь о проблемах с принтером. – Javier

ответ

4
gs \ 
    -dCompatibilityLevel=1.4 \ 
    -dPDFSETTINGS=/screen \ 
    -dNOPAUSE \ 
    -dBATCH \ 
    -sDEVICE=pdfwrite \ 
    -sOutputFile=output.pdf \ 
    input.pdf 

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

+2

Какую версию Ghostscript вы используете? Знаете ли вы, что '/ screen' переустанавливает ваши изображения на довольно низкое разрешение (72 dpi), что может быть целесообразно для рендеринга на экране, но что может привести к проблемам с качеством печати на принтерах? –

4

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

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

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

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

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

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

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

ни pdfsizeopt, ни Многолистного-х tool.pdf.Compress страдают от этих ограничений.

Смежные вопросы