Вопрос или проблема
Я ищу утилиту командной строки для Linux, которая принимает объединённый PDF (между 1 МБ и 500 МБ) и выводит оптимизированную/линеаризованную версию. Каждая страница использует один и тот же набор из ~8 изображений и один и тот же шрифт. Пропуск одного из моих тестовых файлов через Adobe Acrobat Pro занял всего около 30 секунд, и размер файла уменьшился с 34 МБ до 1,6 МБ. Я не ожидаю такой производительности, но что-то даже наполовину таким быстрым/эффективным было бы замечательно.
Мне это нужно для пакетной обработки на Linux, поэтому необходима командная строка. Я пробовал pdftk, gs, qpdf, pdftops и pdfsizeopt. Первые 4 слишком медленны или не полностью оптимизируют pdf файлы. pdfsizeopt кажется многообещающим, но у меня проблемы с последовательностью — некоторые из моих pdf работают, другие выдают ошибки.
Есть ли идеи, кроме тех, что я уже перечислил? Я бы не возражал даже купить что-то, если это будет работать.
Я лично использую Ghostscript для оптимизации размера моих PDF файлов. Вы можете указать уровень оптимизации, и он уменьшит размеры изображений. Это также имеет (на мой взгляд, желательный) побочный эффект удаления элементов, которые находятся за пределами полей страницы.
gs -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dCompatibilityLevel=1.4 -r75 -dNOPAUSE -dQUIET -dBATCH -sOutputFile="output.pdf" "input.pdf"
Уровни, которые вы можете использовать:
-dPDFSETTINGS=/screen (качество только для просмотра на экране, 72 dpi изображения)
-dPDFSETTINGS=/ebook (низкое качество, 150 dpi изображения)
-dPDFSETTINGS=/printer (высокое качество, 300 dpi изображения)
-dPDFSETTINGS=/prepress (высокое качество, сохраняющее цвет, 300 dpi изображения)
-dPDFSETTINGS=/default (почти идентично /screen)
mutool
— это то, что я использую в последние несколько лет
# минимально возможный выход
mutool clean -ggggl -dfiz IN.pdf OUT.pdf
# слегка, но незначительно больше
mutool clean -gggg -l IN.pdf OUT.pdf
Ответ или решение
Для выполнения задачи по оптимизации (линеаризации) PDF-файлов через командную строку в операционной системе Linux существует множество инструментов. Давайте рассмотрим несколько наиболее эффективных вариантов, которые способны обеспечить хорошую производительность и оптимизацию ваших документов.
1. Ghostscript
Ghostscript — это мощный инструмент для работы с PDF и PostScript файлами, который позволяет изменять размер и оптимизировать PDF-документы. Вы можете настроить уровень оптимизации, а также уменьшить размер изображений. Ниже приводится пример использования Ghostscript для создания оптимизированной версии файла:
gs -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dCompatibilityLevel=1.4 -r75 -dNOPAUSE -dQUIET -dBATCH -sOutputFile="output.pdf" "input.pdf"
Уровни оптимизации Ghostscript:
-dPDFSETTINGS=/screen
: для просмотра на экране, качество 72 dpi.-dPDFSETTINGS=/ebook
: низкое качество, 150 dpi.-dPDFSETTINGS=/printer
: высокое качество, 300 dpi.-dPDFSETTINGS=/prepress
: высокое качество, цветопередача, 300 dpi.
2. PdfCpu
PdfCpu — это современный инструмент, который также отлично подходит для оптимизации PDF. Простота использования и эффективность делают его предпочтительным выбором. Пример команды для оптимизации:
pdfcpu optimize in.pdf out.pdf
Дополнительной информацией о настройках и получении лучших результатов можно найти на официальном сайте PdfCpu.
3. Mutool
Mutool является частью пакета MuPDF и предоставляет инструменты для работы с PDF-файлами, включая оптимизацию. Вы можете использовать команду для значительного уменьшения размера файла:
mutool clean -ggggl -dfiz IN.pdf OUT.pdf
Для менее агрессивной оптимизации:
mutool clean -gggg -l IN.pdf OUT.pdf
Дополнительные сведения о Mutool можно найти на сайте MuPDF.
4. PDFtk
Хотя вы упомянули, что PDFtk не оправдал ваших ожиданий, он все же может быть полезен в некоторых случаях, особенно для простых задач, таких как сжатие или объединение PDF-документов.
Заключение
Если у вас есть возможность протестировать различные инструменты, стоит попробовать Ghostscript, PdfCpu и Mutool, так как они продемонстрировали наилучшие результаты в оптимизации PDF-документов с учетом ваших требований. Пишите ваши команды в скрипт и запускайте их в пакетном режиме для обработки множества файлов. Большинство из этих инструментов позволяет легко настроить параметры в соответствии с вашими потребностями, что сделает процесс максимально эффективным.
При возникновении ошибок или нестабильности в процессе оптимизации, рекомендую проверять исходные PDF-документы на наличие проблем или несовместимостей, которые могут препятствовать корректной обработке.
Наилучшие пожелания в вашем проекте по оптимизации PDF-документов!