Skip to content

ArhyPlayer/CLI_PDF_Generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PDF Generator

Генератор PDF документов из CSV/JSON данных и HTML шаблонов с поддержкой кириллицы.

Возможности

  • 📁 Чтение CSV и JSON файлов из директории /data
  • 📄 Использование HTML шаблонов из директории /templates
  • 🔤 Полная поддержка кириллицы (шрифт Arial/Helvetica)
  • 💻 Работа на Windows и macOS
  • 🎨 Красивые PDF документы с профессиональным дизайном
  • 🖱️ Интерактивное меню выбора файлов и шаблонов
  • 📱 Автоматическое открытие PDF в системной программе
  • 🔄 Непрерывная работа - возможность генерировать несколько PDF за одну сессию
  • 🚪 Удобный выход из программы через главное меню
  • 🧾 Генератор чеков - создание счетов-фактур и заказов
  • 📊 Генератор отчетов - создание отчетов по реализации услуг
  • 👥 Работа с компаниями и сотрудниками - автоматическое назначение ответственных
  • 📋 Просмотр загруженных данных - просмотр всех CSV и JSON файлов

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

pdf_generator/
├── data/                    # CSV и JSON файлы с данными
│   ├── invoices.csv        # Счета-фактуры
│   ├── customers.csv       # Клиенты
│   ├── products.csv        # Товары/услуги
│   ├── employees.csv       # Сотрудники
│   ├── transactions.json   # Транзакции
│   ├── services.json       # Услуги
│   ├── staff.json          # Персонал
│   └── clients.json        # Клиенты
├── templates/              # HTML шаблоны
│   ├── invoice_simple.html # Упрощенная форма счета
│   ├── order_detailed.html # Детальная форма заказа
│   └── product_catalog.html # Каталог товаров (отчет)
├── output/                 # Сгенерированные PDF файлы
├── pdf_generator.py        # Основной скрипт
├── requirements.txt        # Зависимости Python
└── README.md              # Документация

Примечание: Папка data/ не включена в репозиторий (добавлена в .gitignore). Необходимо создать её самостоятельно и загрузить ваши CSV/JSON файлы.

Установка

  1. Клонируйте репозиторий или скачайте файлы:

    git clone <repository-url>
    cd pdf_generator
  2. Создайте виртуальное окружение (рекомендуется):

    python -m venv venv
    
    # Windows
    venv\Scripts\activate
    
    # macOS/Linux
    source venv/bin/activate
  3. Установите зависимости:

    pip install -r requirements.txt
  4. Подготовьте данные:

    • Создайте папку data/ если её нет
    • Загрузите ваши CSV или JSON файлы в папку data/
    • Убедитесь, что файлы имеют правильную структуру (см. раздел "Примеры данных")

Использование

  1. Запустите скрипт:

    python pdf_generator.py
  2. Выберите действие в главном меню:

    • Генератор чеков - создание счетов-фактур и заказов
      • Выберите тип файлов (CSV или JSON)
      • Выберите компанию
      • Выберите форму (Упрощенная или Детальная)
      • PDF будет создан и автоматически открыт
    • Генератор отчетов - создание отчетов по реализации
      • Выберите тип файлов (CSV или JSON)
      • PDF будет создан с полным отчетом по всем услугам
    • Загруженные отчеты - просмотр всех загруженных файлов
      • Выберите тип файлов (CSV или JSON)
      • Просмотрите содержимое файлов
    • Выход - завершение работы программы

Главное меню

==================================================
  ГЛАВНОЕ МЕНЮ
==================================================
  1. Генератор чеков
  2. Генератор отчетов
  3. Загруженные отчеты
  4. Выход
==================================================

Примеры данных

CSV файлы

invoices.csv

Счета-фактуры с полями: invoice_id, customer_name, amount, date, status, description

invoice_id,customer_name,amount,date,status,description
INV-001,ООО "ТехноПром",15000.00,2024-01-15,Оплачен,Разработка веб-сайта
INV-002,ИП Иванов И.И.,8500.50,2024-01-20,В ожидании,Консультационные услуги

customers.csv

Клиенты с полями: customer_id, name, email, phone, address

products.csv

Товары с полями: product_id, name, category, price, description, company

employees.csv

Сотрудники с полями: employee_id, name, position, department, salary, hire_date

JSON файлы

transactions.json

Транзакции с информацией о заказах, клиентах и продавцах:

{
  "transaction_id": "TXN-001",
  "order_id": "ORD-001",
  "customer": "ООО КиберТех",
  "salesperson": "Белов Игорь Сергеевич",
  "product": "Система кибербезопасности",
  "amount": 22000.00,
  "status": "completed",
  "transaction_date": "2024-03-01"
}

services.json

Услуги с категориями и описаниями

staff.json

Персонал с должностями и отделами

clients.json

Клиенты с контактной информацией

HTML Шаблоны

invoice_simple.html (Упрощенная форма)

Простой счет-фактура с:

  • Информацией о компании
  • Данными клиента
  • Списком товаров/услуг
  • Итоговой суммой
  • Информацией об ответственном сотруднике

order_detailed.html (Детальная форма)

Детальный заказ с:

  • Подробной информацией о заказе
  • Полными данными клиента (email, телефон, адрес)
  • Таблицей товаров с количеством и ценами
  • Подробной информацией об ответственном сотруднике
  • Подсчетом итогов

product_catalog.html (Отчет по реализации)

Отчет по реализации услуг с:

  • Полным списком всех выполненных проектов
  • Категориями и ценами
  • Описаниями услуг
  • Сводной статистикой (количество проектов, средняя стоимость, общая сумма)

Возможности генератора чеков

  1. Выбор типа файлов - CSV или JSON
  2. Автоматическое назначение сотрудников - система автоматически назначает ответственного сотрудника для каждой компании
  3. Два формата чеков:
    • Упрощенная форма - минимальная информация
    • Детальная форма - полная информация о клиенте и сотруднике
  4. Работа с CSV - загрузка данных из invoices.csv и employees.csv
  5. Работа с JSON - загрузка данных из transactions.json и staff.json

Возможности генератора отчетов

  1. Отчеты из CSV - генерация отчета по данным из products.csv
  2. Отчеты из JSON - генерация отчета по данным из transactions.json и services.json
  3. Сводная статистика - автоматический подсчет количества проектов, средней стоимости и общей суммы
  4. Категоризация - группировка проектов по категориям

Настройка шрифтов

Скрипт автоматически настраивает шрифты для корректного отображения кириллицы:

  1. macOS: Использует системные шрифты Arial или Helvetica
  2. Windows: Использует системные шрифты Arial или Calibri
  3. Fallback: Если системные шрифты не найдены, используется стандартный Helvetica

Скрипт автоматически определяет доступные шрифты при запуске.

Требования

  • Python 3.7+
  • reportlab>=4.0.0
  • pandas>=2.2.0
  • jinja2>=3.1.2

Поддерживаемые операционные системы

  • ✅ Windows 10/11
  • ✅ macOS 10.14+
  • ✅ Linux (Ubuntu, CentOS, etc.)

Устранение неполадок

Ошибка "No module named 'reportlab'"

pip install reportlab

Проблемы с кириллицей

  • Убедитесь, что файлы сохранены в кодировке UTF-8
  • Скрипт автоматически настраивает шрифты для поддержки кириллицы
  • Если текст отображается некорректно, проверьте доступность системных шрифтов

Ошибка открытия PDF

  • На macOS может потребоваться разрешение на открытие файлов
  • На Windows убедитесь, что установлена программа для просмотра PDF
  • Проверьте настройки безопасности системы

Проблемы с зависимостями

pip install --upgrade pip
pip install -r requirements.txt

Файлы не найдены

  • Убедитесь, что папка data/ существует в корне проекта
  • Проверьте, что файлы имеют правильные имена (invoices.csv, transactions.json и т.д.)
  • Проверьте права доступа к файлам

Особенности реализации

Автоматическое назначение сотрудников

Система автоматически назначает ответственного сотрудника для каждой компании:

  • Для CSV файлов: сотрудники назначаются из employees.csv по кругу
  • Для JSON файлов: сотрудники назначаются из staff.json на основе данных из transactions.json

Поддержка нескольких источников данных

Система поддерживает два основных источника данных:

  • CSV файлы (invoices.csv, customers.csv, products.csv, employees.csv)
  • JSON файлы (transactions.json, services.json, staff.json, clients.json)

Расширенная информация в детальных формах

Детальные формы включают:

  • Полную контактную информацию клиента (email, телефон, адрес)
  • Подробную информацию об ответственном сотруднике (имя, должность, департамент)
  • Детальную таблицу товаров с количеством и ценами

Возможные расширения

Данный функционал можно расширить следующими возможностями:

📡 API интеграция

  • Подключение к внешним API для получения данных
  • Автоматическая синхронизация с CRM системами
  • Интеграция с базами данных через REST API

📄 Дополнительные форматы данных

  • TXT файлы - поддержка текстовых файлов с данными
  • DOC/DOCX файлы - чтение данных из документов Word
  • XML файлы - поддержка XML формата данных
  • Excel файлы - расширенная поддержка .xlsx файлов

🎨 Расширенные возможности

  • Больше HTML шаблонов
  • Кастомные стили и темы
  • Поддержка изображений в PDF
  • Многостраничные документы
  • Водяные знаки и штампы

📊 Дополнительные отчеты

  • Финансовые отчеты по периодам
  • Отчеты по сотрудникам
  • Отчеты по клиентам
  • Статистика по категориям

Варианты оформления

Данный функционал можно оформить в виде:

🖥️ Desktop приложение

  • PyQt/Tkinter - нативное приложение для Windows/macOS/Linux
  • Electron - кроссплатформенное приложение на веб-технологиях
  • Kivy - современный интерфейс с поддержкой сенсорных экранов

🤖 Telegram бот

  • Удобный интерфейс через мессенджер
  • Загрузка файлов через Telegram
  • Получение готовых PDF документов
  • Интеграция с облачными хранилищами

🌐 Веб-приложение

  • Flask/Django - веб-интерфейс для генерации PDF
  • Streamlit - быстрый прототип веб-приложения
  • FastAPI - высокопроизводительное API

☁️ Облачное решение

  • Развертывание на AWS/Azure/GCP
  • Масштабируемость для больших объемов
  • API для интеграции с другими системами

Поддержка

При возникновении проблем создайте issue в репозитории или обратитесь к разработчику.

Changelog

Версия 2.0

  • Добавлен генератор чеков с выбором компаний
  • Добавлен генератор отчетов по реализации
  • Добавлен просмотр загруженных данных
  • Добавлена поддержка JSON файлов
  • Добавлено автоматическое назначение сотрудников
  • Добавлены две формы чеков (упрощенная и детальная)
  • Улучшен интерфейс главного меню

Версия 1.0

  • Базовая функциональность генерации PDF
  • Поддержка CSV файлов
  • Три базовых шаблона
  • Поддержка кириллицы

📝 Лицензия

MIT License - свободно используйте в учебных и коммерческих целях.

About

Генератор PDF документов из CSV/JSON данных и HTML шаблонов с поддержкой кириллицы.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors