PDF-файлы довольно широко используются в сети для обмена документами, и другой текстовой и графической информацией. Иногда может возникать необходимость уменьшения размера файлов, для более быстрой передачи, к примеру, по почте. Известно, что существуют облачные сервисы, где вы отправляете свой файл, сервис выполняет оптимизацию, и вам возвращается результат. Однако данный метод не всегда может устраивать пользователей, в связи с неизвестностью куда может этот файл попасть далее, после загрузки его на этот сервис. Поэтому, сжимать файлы локально вполне обоснованное действие в вопросе безопасности. В данном посту мы рассмотрим пример сжатия файлов в Linux.
Мы рассмотрим два способа сжатия PDF-файла, посредством командной строки и через утилиты в GUI-оболочке. В качестве операционной системе в нашем примере используется Linux CentOS 7.
Разумеется, для сжатия PDF-файла предварительно будет необходимо установить инструмент, который позволит выполнять эту операцию. Для командной строки существует такой инструмент как Ghostscript. Данная утилита доступна для большинства дистрибутивов Linux с открытым исходным кодом. В связи с этим вы можете свободно развернуть её у себя в системе.
sudo apt install ghostscript
После того как Ghostscript был установлен в системе, вы уже можете приступать к сжатию файла на диске. Чтобы выполнить сжатие файла вам следует выполнить следующую команду:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed.pdf input.pdf
Как вы можете заметить команда довольно длинная, однако пугаться вам её не стоит. Удобно будет скопировать всю строку, затем немного подправить под свои нужды. Первое что следует исправить это название файлов. Исходный файл в строке это input.pdf, сжатый файл будет создан с именем compressed.pdf. Параметр dPDFSETTINGS определяет уровень сжатия, а значит и качество сжатого файла на выходе. Поэтому вы можете выставить одно из значений, которое вам более подходит:
Стоит понимать, что разные файлы, в зависимости от его содержимого могут сжиматься по-разному. Поэтому иногда может возникнуть ситуация, что после сжатия размер файла не сильно изменился, либо стал даже больше исходного размера. Тут уже нужно будет искать другое решение.
Данный метод тоже может быть эффективным при необходимости сжатия файла в Linux-системе где есть поддержка графического интерфейса. Для этого вам помогут PDF-редакторы, которые так же умеют сживать файлы. Давайте рассмотрим один из популярных инструментов, которым вы можете воспользоваться.
Для GUI оболочки есть такая программа Panos которая основана на Python-Qt для Ghostdcript. Используя эту программу с пользовательским интерфейсом, вы можете выполнить сжатие файла. Уровень сжатия так же настраивается в интерфейсе, и вы можете выбрать более подходящий для вас. Сжатый файл будет размещён в той же директории что и исходный файл, с переименованием. Исходный файл при этом будет оставлен без изменений.
Новые решения появляются довольно часто, и если вы не нашли ничего подходящего, то вам стоит пробовать другие PDF-редакторы, которые в большинстве своём умеют оптимизировать файлы PDF.