Skip to content

semenbakin412/test.PDF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Генератор PDF документов из CSV/JSON и HTML шаблонов

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

Установка

  1. Установите зависимости:
pip install -r requirements.txt
  1. (Опционально) Поместите шрифт для кириллицы в папку fonts:
    • Скачайте DejaVuSans.ttf или Roboto-Regular.ttf
    • Поместите файл в папку fonts/
    • Убедитесь, что имя файла совпадает с FONT_FILE_NAME в скрипте (по умолчанию: DejaVuSans.ttf)

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

PDF/
├── generate_invoice_pdf.py  # Основной скрипт
├── requirements.txt          # Зависимости Python
├── data/                     # CSV/JSON файлы с данными
│   ├── invoices.csv
│   └── invoices.json
├── templates/                # HTML шаблоны
│   └── invoice_template.html
├── output/                   # Сгенерированные PDF (создаётся автоматически)
└── fonts/                    # Шрифты для кириллицы (опционально)
    └── DejaVuSans.ttf

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

  1. Запустите скрипт:
python generate_invoice_pdf.py
  1. Следуйте инструкциям в консоли:

    • Выберите файл с данными (CSV или JSON)
    • Выберите HTML шаблон
    • Выберите invoice_id из списка доступных
  2. PDF будет автоматически сохранён в папку output/ и откроется в системной программе для просмотра.

Формат данных

CSV файлы

Должны содержать колонку invoice_id и другие поля, которые будут использоваться в шаблоне.

Пример:

invoice_id,customer_name,amount,date,description
INV-001,Иванов Иван,15000.50,2025-02-15,Услуги

JSON файлы

Могут быть в формате:

  • Массив объектов: [{...}, {...}]
  • Объект с ключом invoices: {"invoices": [{...}, {...}]}
  • Один объект: {...}

Пример:

[
  {
    "invoice_id": "INV-001",
    "customer_name": "Иванов Иван",
    "amount": 15000.50,
    "date": "2025-02-15",
    "description": "Услуги"
  }
]

HTML шаблоны

В HTML шаблонах используйте плейсхолдеры вида {{field_name}} для подстановки данных.

Пример:

<h1>Счёт {{invoice_id}}</h1>
<p>Клиент: {{customer_name}}</p>
<p>Сумма: {{amount}}</p>

Требования

  • Python 3.8+
  • pandas
  • weasyprint
  • (Опционально) Шрифт DejaVu Sans или Roboto для поддержки кириллицы

Поддерживаемые ОС

  • Windows
  • macOS
  • Linux

About

my_project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors