Как сжимать один или несколько файлов pdf

Для экономии нашего рабочего времени автоматизируем процесс работы с большими по размеру pdf файлами.
Создайте фаил в программе Kwrite c именем compresspdf.sh и добавьте в его содержание следующий код:

#!/bin/bash

# Глобальные переменные
pdf_files=()
selected_files=()

# Функция отображения главного меню
show_menu() {
echo ""
echo "=========================================="
echo " МЕНЮ СЖАТИЯ PDF-ФАЙЛОВ"
echo "=========================================="
echo "1) Поиск PDF-файлов в текущей папке"
echo "2) Сжать выбранные PDF-файлы"
echo "3) Выход"
echo "=========================================="
}

# Функция поиска PDF-файлов
find_pdf_files() {
pdf_files=() # Очищаем массив
local i=1

echo "Поиск PDF-файлов в текущей папке..."

for file in *.pdf; do
if [ -f "$file" ]; then
pdf_files+=("$file")
echo " $i) $file"
((i++))
fi
done

if [ ${#pdf_files[@]} -eq 0 ]; then
echo " В текущей папке нет PDF-файлов."
else
echo " Найдено PDF-файлов: ${#pdf_files[@]}"
fi
}

# Функция выбора файлов для сжатия
select_files_for_compression() {
if [ ${#pdf_files[@]} -eq 0 ]; then
echo "Сначала выполните поиск PDF-файлов (пункт 1)."
return 1
fi

echo ""
echo "Выберите файлы для сжатия (номера через пробел, 'all'/'все' — все, 'q'/'й' — назад):"
read -r selection

# Приводим ввод к нижнему регистру
local selection_lower=$(echo "$selection" | tr '[:upper:]' '[:lower:]')

case "$selection_lower" in
"q"|"й")
echo "Возврат в главное меню."
return 0
;;
"all"|"все")
selected_files=("${pdf_files[@]}")
echo "Выбраны все файлы для сжатия."
;;
*)
selected_files=() # Очищаем предыдущий выбор
for num in $selection; do
if ! [[ "$num" =~ ^[0-9]+$ ]]; then
echo "Ошибка: '$num' — не номер файла."
return 1
fi

if [ "$num" -lt 1 ] || [ "$num" -gt "${#pdf_files[@]}" ]; then
echo "Ошибка: номер '$num' вне диапазона."
return 1
fi

selected_files+=("${pdf_files[$((num-1))]}")
done
echo "Выбрано файлов: ${#selected_files[@]}"
;;
esac
}

# Функция сжатия PDF
compress_pdf() {
local input_file="$1"
local output_file="compressed_$input_file"

echo "Сжимаю: $input_file..."

gs -sDEVICE=pdfwrite \
-dCompatibilityLevel=1.4 \
-dPDFSETTINGS=/ebook \
-dNOPAUSE \
-dQUIET \
-dBATCH \
-sOutputFile="$output_file" \
"$input_file"

if [ $? -eq 0 ]; then
original_size=$(stat -c%s "$input_file")
compressed_size=$(stat -c%s "$output_file")
savings=$((original_size - compressed_size))

if command -v bc &> /dev/null; then
printf " ✓ Успешно: экономия %d байт (%.1f%%)\n" \
$savings $(echo "scale=2; $savings * 100 / $original_size" | bc -l 2>/dev/null || echo 0)
else
printf " ✓ Успешно: экономия %d байт\n" $savings
fi
else
echo " ✗ Ошибка при сжатии $input_file"
rm -f "$output_file"
fi
}

# Основная часть скрипта
main() {
# Проверка наличия ghostscript
if ! command -v gs &> /dev/null; then
echo "Ошибка: ghostscript не установлен."
echo "Установите его командой: sudo apt-get install ghostscript"
exit 1
fi

while true; do
show_menu
read -p "Выберите пункт меню (1-3): " choice

case "$choice" in
1)
find_pdf_files
;;
2)
select_files_for_compression
if [ $? -eq 0 ] && [ ${#selected_files[@]} -gt 0 ]; then
echo ""
echo "Начинаю сжатие выбранных файлов..."
echo "=========================================="
for file in "${selected_files[@]}"; do
compress_pdf "$file"
done
echo ""
echo "Сжатие завершено!"
fi
;;
3)
echo "Выход из программы."
exit 0
;;
*)
echo "Неверный выбор. Введите 1, 2 или 3."
;;
esac
done
}

# Запуск основной функции
main
---------------------------------------------------------------------------------------------------------------------------------------------
Воспользуйтесь терминалом вызовите его сочетанием клавиш Ctrl+Alt+T введите su нажмите Enter введите пароль Администратора и просто перекиньте этот фаил в терминал из окна рабочего стола или проводника смотря где вы его создавали.

Примечание !!!!!!!!
Фаил может не сработать если не стоит в свойствах файла галочка Является выполняемым и стоят права на просмотр и изменение.

Ниже вы можете скачать мой фаил формата txt* после скачивания вам необходимо переименовать фаил с расшитения .txt на .sh

Для работы с одним файлом есть утилита в репозитории для сжатия pdf файлов

Для этого откроем терминал Ctrl+Alt+T от имени админа su- ваш пароль

и введем вот эту команду apt-get install pdf-compress

после установки приложения у вас оно должно появиться в меню пуск наберите Compress вы должны увидеть приложение как у меня на картинке ниже