An open API service indexing awesome lists of open source software.

https://github.com/rockerzxy/pdfiler

cli-утилита для создания PDF из изображений
https://github.com/rockerzxy/pdfiler

automation pdf pdf-files pdfiler python

Last synced: 7 months ago
JSON representation

cli-утилита для создания PDF из изображений

Awesome Lists containing this project

README

          

# pdfiler ─ cli-утилита для создания PDF из изображений

## Описание
`pdfiler` — это утилита для создания PDF-файлов из изображений. Она позволяет конвертировать изображения в формат PDF с возможностью настройки качества изображений внутри итогового файла. Утилита поддерживает работу с изображениями как в виде отдельных файлов, так и целыми папками. Также есть опция для удаления исходных файлов после их обработки.

Утилита использует следующие Python-библиотеки:
- `Pillow` — для обработки изображений.
- `Click` — для создания командного интерфейса.

Они будут автоматически установлены через `pip` в виртуальное окружение при выполнении скрипта установки. Не волнуйтесь, хост-система засорена не будет :)

## Установка с помощью скрипта (`apt`-only!)
Для установки и использования утилиты выполните следующие шаги:

1. **Запустите установочный скрипт**
```sh
sudo bash -c "$(wget https://raw.githubusercontent.com/RockerzXY/pdfiler/refs/heads/master/setup.sh -O -)"
```

2. **Установка завершена**

После установки вы можете вызвать справку с помощью команды:
```sh
pdfiler -h
```

Это покажет доступные опции и примеры использования.

## Ручная установка
Для установки своими руками утилиты выполните следующие шаги:

1. **Установите необходимые пакеты**

Убедитесь, что пакеты `wget`, `git`, `python3`, `python3-venv` установлены.

3. **Клонируйте репозиторий**

Склонируйте репозиторий и перейдите в него:
```sh
git clone https://github.com/RockerzXY/pdfiler/
cd pdfiler
```

5. **Перемещение файлов в целевую директорию**

Переместите все файлы проекта в `/usr/local/pdfiler`:
```sh
sudo mkdir -p /usr/local/pdfiler
sudo cp -r ./* /usr/local/pdfiler/
```

7. **Создание виртуального окружения**

Чтобы не засорять `python`-окружение хостовой системы перейдём в директорию установки и создадим виртуальное окружение. Далее установим необходимые для утилиты библиотеки.

У вас может не получится зайти в окружение, используя команду `sudo`, тогда попробуйте от суперпользователя, введя `sudo su`

```sh
cd /usr/local/pdfiler
sudo python3 -m venv venv
sudo source ./venv/bin/activate
pip install --upgrade pip
pip install -r ./requirements.txt
```

9. **Выдача прав на исполнение**

Установите права на исполнение для файла `pdfiler.py`:
```sh
sudo chmod +x ./pdfiler.py
```

11. **Создание скрипта для запуска**

Создайте исполняемый скрипт в директории `/usr/local/bin`, который будет запускать утилиту.

Выполните команду:
```sh
sudo nano /usr/local/bin/pdfiler
```

И вставьте в файл следующее содержимое:
```bash
#!/bin/bash
source /usr/local/pdfiler/venv/bin/activate
python3 /usr/local/pdfiler/pdfiler.py "$@"
```

Установите права на исполение для файла `pdfiler`:
```sh
sudo chmod +x /usr/local/bin/pdfiler
```

13. **Очистка (опционально)**

Удалите склонированный репозиторий. Не забыли где он находится?

14. **Установка завершена**

Установка завершена. Теперь можно использовать утилиту. Проверьте, что она работает:
```sh
pdfiler -h
```

## Опции командной строки
- `-d, --input-dir DIRECTORY` — Директория с изображениями. При использовании этой опции файлы должны быть указаны как относительные имена или `auto-stamp`.
- `-q, --quality INTEGER` — Качество изображений в итоговом PDF (1-100). По умолчанию 80.
- `-o, --output TEXT` — Путь для сохранения итогового PDF (обязательная опция).
- `--dry-run` — Показать файлы, которые будут обработаны, без создания PDF.
- `-r, --remove-source` — Удалить исходные файлы после создания PDF.
- `-v, --verbose` — Подробный вывод процесса.

## Примеры использования

1. **Явно указаны файлы:**
```sh
pdfiler 1.jpg 2.jpg -o gallery.pdf -q 80 -v
```

2. **Автоматический сбор файлов из директории с использованием `auto-stamp`:**
```sh
pdfiler auto-stamp -d /path/to/images -o gallery.pdf -q 80 -v
```

В этом примере утилита автоматически собирает изображения из указанной директории и сортирует их по времени изменения. Файлы должны быть указаны как относительные имена или в режиме `auto-stamp`, который будет использовать все изображения в папке.

## Структура проекта

```
.
├── pdfiler.py # Основной исполняемый файл утилита
├── requirements.txt # Список зависимостей для установки
├── setup.sh # Скрипт для автоматической установки
└── .gitignore
```

## Логика работы

1. При использовании `-d` утилита ищет все изображения в указанной директории и сортирует их по времени изменения.
2. При обработке изображений утилита проверяет их валидность и преобразует изображения с альфа-каналом или палитрой в формат RGB.
3. Утилита сохраняет итоговый PDF с указанным качеством изображений. Также есть возможность удалить исходные файлы после их обработки.

## Разработка и улучшения

Если у вас есть предложения по улучшению утилиты или репозитория, не стесняйтесь открывать `issue` или `pull request`.

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

## Лицензия
Этот проект распространяется под лицензией **GPL v3**. Вы можете свободно использовать и модифицировать код при условии соблюдения требований этой лицензии. Подробнее см. в файле [LICENSE](LICENSE).