Сжатие PDF файлов в Ubuntu linux

pdf-compress-img
При большом объеме PDF файлов их можно оптимизировать, сжать без видимой потери качества при уменьшении размера от 1,5 до 10 раз. Для этого в Ubuntu есть утилита Ghostscript. Если она не установлена, то установить можно так:

sudo apt-get install ghostscript

Например:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=new.pdf orig.pdf

gs - сам Ghostscript

-dBATCH - завершить работу Ghostscript после объединения файлов

-dNOPAUSE - производить операции без запросов пользователю или придется нажимать ENTER

-PDFSETTINGS - качество сжатия
/ebook - 150 dpi
/screen - low-resolution output аналог Acrobat Distiller «Screen Optimized»
/printer - аналог Acrobat Distiller «Print Optimized»
/prepress - аналог Acrobat Distiller «Prepress Optimized»
/default - лучшее качество за счет увеличения размера файла
Информация по параметрам скудная, так что оптимальные настройки придется подбирать опытным путем.

Еще несколько примеров:

gs -dBATCH -dNOPAUSE  -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile=new.pdf orig.pdf

Если нужно сжать несколько .pdf файлов сразу, можно применить простейший bash скрипт:

#!/bin/bash
for file in *.pdf; do
 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile="./compressed/$file" $file
done

При выполнении скрипта будут обработаны все файлы с расширением .pdf в текущей директории, а их сжатые копии помещены в директорию ./compressed (которую заранее надо создать или указать любой иной путь).

Команды ps2pdf и pdf2ps используют тот же gs и позволяют конвертировать файлы PostScritp в PDF и обратно:

Для нескольких файлов, например:

#!/bin/bash
for file in *.pdf; do
ps=".ps";
pdf2ps $file "$file$ps"; 
done
for file in *.ps; do
pdf=".pdf";
ps2pdf $file "$file$pdf"; 
done

Для сжатия .pdf файлов можно применить команду:

ps2pdf -dUseFlatCompression=true orig.pdf

На выходе получается сжатый файл с добавленным расширением .pdf - orig.pdf.pdf

Или для нескольких файлов сразу:

#!/bin/bash
Destination="./press"
#Проверка существования директории
if ! [ -d $Destination ];
then mkdir $Destination
fi
#Сжатие всех pdf файлов из текущей директории и сохранение их в папку press
for file in *.pdf; do
ps2pdf -dUseFlatCompression=true $file "$Destination/$file";
done

Можно заметить, что второй способ работает быстрее, но с худшим сжатием. Например, при размере оригинального файла orig.pdf в 1,2M способ сжатия gs дал результат в 338K, в то время как ps2pdf показал результат в 941K. Конечно, всё зависит от структуры исходного файла и вариантов ключей соответсвующих команд. В некоторых случаях применение команды сжатия имеет обратный результат и размер исходного файла увеличивается.

Источники:
http://superadvisor.ru/stati/linux/compress-pdf-ubuntu.html
http://plutonit.ru/view_post.php?id=589
https://www.linux.org.ru/forum/desktop/4487423
http://грибовы.рф/?p=1308

 

Закладка Постоянная ссылка.

Добавить комментарий

Ваш e-mail не будет опубликован.

*