Как за несколько минут создать 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 и статьям по науке о данных. Если вы зарегистрируетесь по моей ссылке, я получу небольшую комиссию без каких-либо дополнительных затрат для вас.