Генератор PDF-документов с подстановкой переменных
pip install jinja2 pdfkit
#template.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
body { font-family: Arial; margin: 40px; }
h1 { color: #333; }
</style>
</head>
<body>
<h1>Справка</h1>
<p>Настоящая справка выдана <strong>{{ name }}</strong>,</p>
<p>в том, что он(а) действительно работает в компании <strong>{{ company }}</strong></p>
<p>в должности <strong>{{ position }}</strong> с {{ start_date }} по {{ end_date }}.</p>
<br>
<p>Дата выдачи: {{ issue_date }}</p>
</body>
</html>
#data.json
{
"name": "Иванов Иван Иванович",
"company": "ООО Ромашка",
"position": "инженер-программист",
"start_date": "01.01.2020",
"end_date": "22.05.2025",
"issue_date": "22.05.2025"
}
#generate.py
import json
import pdfkit
from jinja2 import Environment, FileSystemLoader
import os
# Загрузка шаблона
env = Environment(loader=FileSystemLoader('.'))
template = env.get_template("template.html")
# Загрузка данных
with open("data.json", encoding="utf-8") as f:
context = json.load(f)
# Рендерим HTML с подставленными значениями
html_out = template.render(context)
# Убедимся, что папка output существует
os.makedirs("output", exist_ok=True)
# Генерация PDF
pdfkit.from_string(html_out, "output/справка.pdf")
print("✅ PDF успешно создан в /output/справка.pdf")