Skip to content

FileFlow Converter — это простое и удобное кросс-платформенное приложение для пакетной конвертации документов в формат PDF.

Notifications You must be signed in to change notification settings

IGORSVOLOHOVS/ConvertorPDF

Repository files navigation

📑 FileFlow Converter

FileFlow Converter — это простое и удобное кросс-платформенное приложение для пакетной конвертации документов в формат PDF.

✨ Основные возможности

  • Пакетная конвертация: Выбирайте или перетаскивайте десятки файлов (.docx, .pptx, .doc, .ppt) и конвертируйте их в PDF одним кликом.
  • Интерактивный UI: Современный тёмный интерфейс с Drag-and-Drop, подсветкой и прогресс-баром.
  • Кросс-платформенность: Автоматически использует системные инструменты для конвертации:
    • Microsoft Office на Windows для высочайшего качества.
    • LibreOffice на Linux/macOS для универсальности.
  • Умные функции: Приложение запоминает последнюю открытую папку, автоматически копирует PDF-файлы без конвертации и сохраняет настройки интерфейса.
  • Асинхронность: Тяжёлые операции выполняются в отдельном потоке, поэтому интерфейс никогда не зависает.
  • Подробное логирование: Все действия, включая ошибки и размеры файлов, записываются в лог-панель и в файлы на диске.

🚀 Установка и запуск

Шаг 1: Клонирование репозитория

git clone <URL-вашего-репозитория>
cd <имя-папки-с-проектом>

Шаг 2: Подготовка окружения (в зависимости от вашей ОС)

🐧 Для Linux (Fedora/Ubuntu/Debian)

Вам понадобится LibreOffice для выполнения конвертации.

# Для Fedora
sudo dnf install libreoffice

# Для Ubuntu/Debian
sudo apt-get update && sudo apt-get install libreoffice

🪟 Для Windows

Вам понадобится установленный Microsoft Office (Word, PowerPoint).

Шаг 3: Установка зависимостей Python

Мы рекомендуем использовать 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 автоматически установит нужные пакеты для вашей операционной системы.

Шаг 4: Запуск приложения

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 и файлы.

About

FileFlow Converter — это простое и удобное кросс-платформенное приложение для пакетной конвертации документов в формат PDF.

Topics

Resources

Stars

Watchers

Forks

Languages