FileFlow Converter — это простое и удобное кросс-платформенное приложение для пакетной конвертации документов в формат PDF.
- Пакетная конвертация: Выбирайте или перетаскивайте десятки файлов (.docx, .pptx, .doc, .ppt) и конвертируйте их в PDF одним кликом.
- Интерактивный UI: Современный тёмный интерфейс с Drag-and-Drop, подсветкой и прогресс-баром.
- Кросс-платформенность: Автоматически использует системные инструменты для конвертации:
- Microsoft Office на Windows для высочайшего качества.
- LibreOffice на Linux/macOS для универсальности.
- Умные функции: Приложение запоминает последнюю открытую папку, автоматически копирует PDF-файлы без конвертации и сохраняет настройки интерфейса.
- Асинхронность: Тяжёлые операции выполняются в отдельном потоке, поэтому интерфейс никогда не зависает.
- Подробное логирование: Все действия, включая ошибки и размеры файлов, записываются в лог-панель и в файлы на диске.
git clone <URL-вашего-репозитория>
cd <имя-папки-с-проектом>Вам понадобится LibreOffice для выполнения конвертации.
# Для Fedora
sudo dnf install libreoffice
# Для Ubuntu/Debian
sudo apt-get update && sudo apt-get install libreofficeВам понадобится установленный Microsoft Office (Word, PowerPoint).
Мы рекомендуем использовать uv для быстрой установки.
# Устанавливаем uv, если его нет
pip install uv
# Создаём и активируем виртуальное окружение
uv venv
source .venv/bin/activate # На Windows: .venv\Scripts\activate
# Устанавливаем зависимости
uv pip install -r requirements.txtКоманда uv pip install -r requirements.txt автоматически установит нужные пакеты для вашей операционной системы.
python main.pyДля запуска модульных тестов выполните команду:
pytest -vПроект построен на основе чистой архитектуры (Clean Architecture), разделённой на слои:
domain.py: Ядро бизнес-логики. Содержит сущности (Document) и контракты/интерфейсы (IConverter).application.py: Логика приложения.Controller: Оркестрирует весь процесс. Принимает файлы от UI, создаётWorker-а для конвертации и передаёт результаты обратно в UI через сигналы.Worker: Выполняет ресурсоёмкую задачу конвертации в отдельном потоке (QThreadPool), чтобы не блокировать интерфейс.
infrastructure.py: Реализация внешних зависимостей.UnoconvConverter: Конвертер для Linux, использующий системную утилитуunoconv(часть LibreOffice).OfficeConverter: Конвертер для Windows, использующий COM-интерфейсы для взаимодействия с MS Office.get_converter(): Фабричная функция, которая определяет ОС и возвращает соответствующий конвертер.
ui.py: Весь код пользовательского интерфейса на PyQt6.MainWindow: Основное окно, содержит всю логику отображения, обработку событий (клики, drag-and-drop) и обновление состояния виджетов.
logger.py: Настройка логгераloguruдля вывода в консоль, UI и файлы.