Генератор PDF-документов с подстановкой переменных

Генератор 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")


Report Page