2012-04-26 3 views
3

Я использую ghostscript на сервере linux для объединения PDF-файлов. Я использую последнюю версию, 9.05. Обычно мне приходится объединять 5 или более файлов PDF. В настоящее время требуется около 20 секунд, чтобы объединить 3 PDF-файла ... это кажется мне очень медленным. Вот строки, я использую:Способы оптимизации Ghostscript?

гс -dBATCH -dNOPAUSE -dNOGC -q -sDEVICE = pdfwrite -sOutputFile = output.pdf -c 3000000 setvmthreshold -f a.pdf b.pdf c.pdf

Какие-либо предложения?

+0

Насколько велики 3 PDF-файла в терминах байтов и страниц? Сколько шрифтов используется каждым PDF-файлом? (Используйте 'pdffonts a.pdf',' pdffonts b.pdf' ...) Каковы соответствующие факты для 'output.pdf'? Вы знаете, какой эффект должен иметь «-dNOGC»? Это работает? –

+0

@pipitas Хорошая точка. Отключение GC может привести к большей замене. Кроме того, нужны котировки вокруг аргумента опции -c. Нет опции -f. –

ответ

1

Если вам просто нужно связать некоторые PDF-файлы, вы можете проверить pdfjam. Я никогда не находил его медленным во время привязки, но иногда он выпускает выходные pdf-файлы, которые печатаются довольно медленно.

link

2

Ghostscript полностью интерпретирует каждый файл PDF вплоть до маркировки операций, а затем создает новый файл из комбинированного содержания. Это, очевидно, намного медленнее, чем просто копирование потока контента. Вот почему то, что вы делаете, кажется медленным.

Как указано выше, используйте инструмент, который просто копирует потоки контента и объекты, перенумеруя по мере необходимости, это будет намного быстрее. В дополнение к pdfjam (о чем я ничего не знаю) вы также можете посмотреть pdftk. Будут и другие.

0

Используйте pdfconcat, он сделает это в течение секунды. Ghostscript медленно делает все.

+0

Это утверждение не подходит. Ghostscript делает намного больше, чем делает 'pdfjam'. * 'pdfjam' делает только одно, но делает это быстро. * (Заметьте, я не сказал * '... но делаю это * хорошо *.' * Почему я не сказал, что это потому, что 'хорошо' могут быть определены по-разному в разных обстоятельствах: см. также [обновленный] ответ здесь http://stackoverflow.com/a/4233975/359307. Вот почему я задал свои вопросы @Matt Orlando выше.) –

+0

GhostScript не объединяет файлы PDF, он отнимает их отдельно и воссоздает совершенно новый PDF-файл, выполнив много других вещей, включая повторное сжатие всех изображений, которые OP, вероятно, не хочет этого делать. Есть много способов объединить файлы PDF вместе, некоторые из них лучше других, как вы сказали, но Ghostscript - не лучшее решение. Во всяком случае, я сказал 'pdfconcat' не' pdfjam'. Лично я бы закодировал приложение для себя сам, так как я не думаю, что есть действительно хорошие решения. – Alasdair

+0

Я хорошо знаю, как работает Ghostscript и каковы его сильные (а также слабые) точки. :-) - В зависимости от того, как именно ** вы хотите, чтобы выходной PDF был, Ghostscript * может * быть лучшим решением. Если ** скорость завершения результата ** является единственной проблемой, Ghostscript, безусловно, не самый лучший по причинам KenS (который является разработчиком Ghostscript), и вы (кто, очевидно, читал комментарий KenS), изложены ... (То, что я сказал о 'pdfjam', верно и для' pdfconcat'.) Ваш ответ был односторонним, тогда как ответ пользователя1277476 действительно соответствовал его рекомендациям. –

0

После отслеживания того, что вызывало тайм-ауты, я заметил, что Ghostscript намного быстрее работает с файлами pdf v1.4 (совместимость с acrobat 5) в качестве против v1.7. Простое сохранение файлов PDF, так как v1.4 ускоряется, когда файлы позже используются Ghostscript.

Это может быть неприменимо ко всем ситуациям. В зависимости от скорости, возможно, стоит использовать Ghostscript для преобразования PDF вниз в более низкую версию, чем другие операции. Я вижу разницу во времени от 30 + секунд до ~ 1 секунды, просто изменив версию в формате pdf.