Автоматизированный скрипт для генерации PDF документов на основе данных из CSV/JSON файлов и HTML шаблонов.
- Установите зависимости:
pip install -r requirements.txt- (Опционально) Поместите шрифт для кириллицы в папку
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
- Запустите скрипт:
python generate_invoice_pdf.py-
Следуйте инструкциям в консоли:
- Выберите файл с данными (CSV или JSON)
- Выберите HTML шаблон
- Выберите invoice_id из списка доступных
-
PDF будет автоматически сохранён в папку
output/и откроется в системной программе для просмотра.
Должны содержать колонку invoice_id и другие поля, которые будут использоваться в шаблоне.
Пример:
invoice_id,customer_name,amount,date,description
INV-001,Иванов Иван,15000.50,2025-02-15,УслугиМогут быть в формате:
- Массив объектов:
[{...}, {...}] - Объект с ключом
invoices:{"invoices": [{...}, {...}]} - Один объект:
{...}
Пример:
[
{
"invoice_id": "INV-001",
"customer_name": "Иванов Иван",
"amount": 15000.50,
"date": "2025-02-15",
"description": "Услуги"
}
]В 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