Как за несколько минут создать PDF-файлы с помощью шаблонов Python и HTML

PDF, вероятно, является одним из самых распространенных типов файлов, которые мы можем найти на наших компьютерах.

Мы используем PDF-файлы для наших резюме, отчетов, счетов, вы называете это!

Обычный способ создания файла PDF — сохранение файла Word в формате .pdf, но мы также можем создать файл PDF с помощью Python.

Плюсы? Если вы планируете создать несколько PDF-файлов с использованием одного и того же шаблона, вы можете сделать это с помощью Python! Но сначала мы увидим, как создать файл PDF с помощью Python.

В этом уроке мы сначала создадим простой файл PDF, а затем создадим более сложный файл, который выглядит так, как показано ниже.

Как легко создать PDF-файл с помощью Python

Существуют разные способы создания PDF-файла с помощью Python, но я считаю, что использование HTML-шаблонов проще всего.

С помощью этой опции мы можем создавать базовые и расширенные PDF-файлы за несколько минут!

Установите библиотеки

Для создания файла PDF нам необходимо установить следующие библиотеки:

pip install pdfkit
pip install jinja2

Прежде чем использовать библиотекуpdfkit, нам нужно установить wkhtmltopdf. Шаги по его установке зависят от вашей операционной системы:

# macOS (you need to install brew first)
brew install homebrew/cask/wkhtmltopdf
# Ubuntu
sudo apt-get install wkhtmltopdf

Если у вас Windows, вы можете скачать установщик здесь.

Теперь давайте создадим простой PDF-файл с помощью Python.

Шаг 1. Создайте шаблон HTML с заполнителями

Во-первых, нам нужно создать HTML-документ, который мы будем использовать в качестве шаблона позже.

Чтобы создать этот HTML-документ, мы будем использовать веб-сайт под названием Редактор HTML. На этом веб-сайте мы можем набирать текст в визуальном редакторе слева и генерировать его HTML-код в исходном редакторе справа.

Вот текст, который я ввел в редакторе (этот файл можно найти на моем GitHub)

Обратите внимание на заполнители, которые я создал с помощью файла {{}}. Позже мы введем значения внутри этих фигурных скобок с помощью Python.

Вот HTML-код, сгенерированный HTML-редактором.

Нам нужно скопировать этот HTML-код, создать HTML-файл в нашем рабочем каталоге и вставить в него код.

Шаг 2. Создайте переменную Python для каждого заполнителя.

Во-первых, мы импортируем jinja2 и pdfkit. У меня есть заполнитель с именем {{today_date}}, поэтому я также импортирую datetime, чтобы получить сегодняшнюю дату.

Затем мы создаем переменную Python для каждого заполнителя в нашем HTML-документе и создаем словарь, который связывает заполнители с переменными Python.

Обратите внимание, что я назвал каждую переменную Python в качестве заполнителей, но у них могут быть разные имена.

Шаг 3: Создайте среду для нашего шаблона и экспортируйте PDF

Теперь пришло время использовать jinja2 для создания среды для нашего шаблона.

template_loader = jinja2.FileSystemLoader(‘./’)
template_env = jinja2.Environment(loader=template_loader)

Затем мы указываем, какой шаблон мы используем. В моем случае я назвал файл HTML как basic-template.hmtl. После этого мы визуализируем словарь, созданный на шаге 2.

template = template_env.get_template(‘basic-template.html’)
output_text = template.render(context)

Далее мы добавляем wkhtmltopdf в конфигурацию pdfkit. Для этого нам нужно указать путь, по которому был установлен wkhtmltopdf .

Вот команда, которую вам нужно выполнить, чтобы получить этот путь.

# macOS/Linux
>>> which wkhtmltopdf
'/usr/local/bin/wkhtmltopdf'
# Windows
>>> where wkhtmltopdf
'C:\Program Files\wkhtmltopdf'

Наконец, мы экспортируем файл PDF, используя метод .from_string().

Обратите внимание, что я добавил параметр CSS в метод .from_string(). Это необязательно, но я счел необходимым увеличить размер шрифта абзацев в нашем PDF-файле.

Я создал файл style.css в своем рабочем каталоге и написал код ниже.

p { font-size: 24px; }
li { font-size: 24px; }

Вот и все. Вот PDF, который мы создали с помощью Python.

Код, который мы написали, и файлы, используемые в этом руководстве, можно найти на моем GitHub.

Теперь, чтобы создать более продвинутый PDF-файл, такой как счет-фактура ниже, нам нужно загрузить HTML-шаблон и создать некоторый заполнитель. В этом видеоуроке я показываю, как это сделать.

Автоматизируйте свою жизнь с помощью Python! Получите БЕСПЛАТНУЮ памятку по автоматизации, присоединившись к моему списку рассылки с более чем 10 000 человек.

Если вам нравится читать такие истории и вы хотите поддержать меня как писателя, подумайте о том, чтобы зарегистрироваться и стать участником Medium. Это 5 долларов в месяц, что дает вам неограниченный доступ к тысячам руководств по Python и статьям по науке о данных. Если вы зарегистрируетесь по моей ссылке, я получу небольшую комиссию без каких-либо дополнительных затрат для вас.