13

Мне нужен способ уменьшить и сжать пакеты файлов PDF. Я бы предпочел сделать это на Windows, но Linux будет хорошо, если это будет означать более плавный рабочий процесс.

Я знаю, что есть программы, такие как NitroPDF и Acrobat, которые позволяют вам сделать это, но я боюсь, что это должно быть сделано для каждого файла отдельно. Эти программы также недороги, и я бы предпочел не покупать их, чтобы использовать одну или две функции.

Справочная информация: я использую CamScanner для оцифровки чеков и счетов-фактур для входа в аккаунты (FreeAgent). Все PDF-файлы CamScanner имеют размер A4, а многостраничные часто превышают лимит в 2 МБ.

2 ответа2

18

Так что convert из ImageMagick создаст растеризованный PDF, и многие люди будут заинтересованы в сохранении векторной графики и текста без изменений, чтобы сжимались только встроенные изображения. Так что хорошей альтернативой сжатию является использование gs из примера пакета ghostscript :

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf in.pdf

в приведенном выше параметре команды: -dPDFSETTINGS=/ebook важен. Может иметь 3 значения:

-dPDFSETTINGS=/screen   (screen-view-only quality, 72 dpi images)
-dPDFSETTINGS=/ebook    (low quality, 150 dpi images)
-dPDFSETTINGS=/printer  (high quality, 300 dpi images)
-dPDFSETTINGS=/prepress (high quality, color preserving, 300 dpi imgs)
-dPDFSETTINGS=/default  (almost identical to /screen)
14

Я предлагаю инструмент командной строки, который можно легко объединить с циклами на встроенных языках сценариев в Windows, Linux, OS X и т.д.


ImageMagick поддерживает PDF-файлы и имеет возможность resize с помощью инструмента преобразования . Я никогда не использовал это лично, но вы можете попробовать поиграть с этим.

Вы можете также использовать compress вариант (есть пример здесь):

Повернуть PDF

$ convert -rotate 270 -density 300x300 -compress lzw in.pdf out.pdf

Это предполагает PDF-файл, поддерживаемый TIFF. Параметр плотности важен, потому что в противном случае ImageMagick преобразует изображение вниз (по некоторым причинам). Добавление опции сжатия помогает уменьшить общий размер PDF-файла без потери качества.

Для многостраничных PDF-файлов вы можете использовать pdftk, а затем использовать mogrify из ImageMagick для преобразования каждой страницы на место:

$ pdftk in.pdf burst
$ mogrify -rotate 270 -density 300x300 -compress lzw pg_*.pdf
$ pdftk pg*.pdf cat output out.pdf
$ rm pg*.pdf


Чтобы конвертировать PDF файлы с помощью ImageMagick, вам нужно установить GhostScript .


ImageMagick может конвертировать многостраничные PDF-файлы. Хотя mogrify будет конвертировать на месте, я рекомендую вам использовать convert чтобы вы могли сохранить оригиналы в случае аварии.


Я провел некоторое тестирование вашего предоставленного образца PDF. Это работало довольно хорошо для меня:

convert -density 200 -compress jpeg -quality 20 test.pdf test2.pdf

Плотность по умолчанию составляет 72 DPI. Установив его выше, мы можем получить более высокое разрешение и, следовательно, приемлемое качество. На 150 он выглядел хорошо, и был немного меньше, но если вы хотите обслуживать диапазон PDF-файлов, 200 должно работать.

Сжатие JPEG должно либо автоматически выбирать уровень, либо значение по умолчанию 92 в масштабе от 1 до 100 где 100 является лучшим. Если установить его на 20 , он будет выглядеть почти так же хорошо, как и оригинал (немного нечетко, а небольшой текст внизу немного сложен для чтения, но все равно изначально он был).

Эти варианты принести образец 1.7Mb вниз к 0.5Mb, сохраняя при этом его читаемым. Вы можете немного поэкспериментировать.

Если вы хотите меньший размер (как файла, так и изображения /PDF), вы можете использовать -resize #% , например -resize 75% . Однако в вашем примере PDF это делает мелкий шрифт внизу практически нечитаемым.

Если вам все еще не хватает места, особенно для многостраничных PDF-файлов, вы можете сжать их еще больше, добавив файлы в ZIP (или другой) архив. Это уменьшило размер файла до 0,43 МБ в этом тестовом PDF (снижение качества сжатия JPEG имеет гораздо более радикальный эффект). Вы также можете разбить PDF-файл на страницы с помощью pdftk, как предложил @glallen в своем редактировании, или разбить архив и рекомбинировать на другом конце.

2MB - также довольно маленький лимит вложений, вы можете посмотреть на других почтовых провайдеров. Из памяти GMail предоставляет более 10 МБ на электронную почту.

Эти и другие опции полностью документированы на их сайте.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .