
Когда дело доходит до автоматизации задач и создания отчетов, одним из мощных инструментов в вашем распоряжении является возможность создания PDF-файлов. PDF-файлы предлагают универсальный и последовательный способ представления информации, что делает их отличным выбором для создания отчетов, счетов и других документов. В этой статье мы рассмотрим, как создавать PDF-файлы с помощью Python и библиотеки ReportLab, уделив особое внимание основам и предоставив примеры кода, которые помогут вам начать работу.
Что такое Репортлаб?
ReportLab — это популярная библиотека Python, которая позволяет программно создавать PDF-документы. Он предоставляет различные функции для создания высококачественных PDF-файлов со сложными макетами, графикой и типографикой. Хотя для работы с PDF-файлами в Python существуют и другие библиотеки, такие как PyPDF2 и pdfkit, ReportLab выделяется своей гибкостью и обширной функциональностью.
Начало работы с ReportLab
Чтобы начать работу с ReportLab, вам сначала необходимо установить его. Вы можете сделать это с помощью pip:
pip install reportlab
После установки вы можете начать использовать ReportLab для создания PDF-файлов в сценариях Python.
Создание простого отчета в формате PDF
Начнем с создания базового отчета в формате PDF, в котором перечислены запасы фруктов. Мы будем использовать модуль PLATYPUS от ReportLab, который предлагает высокоуровневые классы и методы для макета страницы и типографики.
from reportlab.platypus import SimpleDocTemplate, Paragraph
from reportlab.lib.styles import getSampleStyleSheet
# Sample data of fruit inventory
fruit = {
"elderberries": 1,
"figs": 1,
"apples": 2,
"durians": 3,
"bananas": 5,
"cherries": 8,
"grapes": 13
}
# Create a PDF document
report = SimpleDocTemplate("/tmp/report.pdf")
# Define a title for the report
styles = getSampleStyleSheet()
report_title = Paragraph("A Complete Inventory of My Fruit", styles["h1"])
# Build the PDF with the title
report.build([report_title])
В этом примере мы использовали класс SimpleDocTemplate для создания документа PDF и добавили заголовок, используя класс Paragraph. Метод build используется для создания документа PDF на основе предоставленного содержимого.
Добавление таблиц в PDF
Наш отчет прост и имеет только название. Давайте сделаем его более информативным, добавив таблицу, в которой отображаются данные об инвентаризации фруктов. Для этого нам нужно преобразовать словарь фруктов в список списков, который является обязательным форматом для объекта Table в ReportLab.
from reportlab.platypus import Table
from reportlab.lib import colors
# Convert the fruit dictionary to a list of lists
table_data = [[k, v] for k, v in fruit.items()]
# Create a table with data and apply some style
table_style = [('GRID', (0, 0), (-1, -1), 1, colors.black)]
report_table = Table(data=table_data, style=table_style, hAlign="LEFT")
# Build the PDF with the title and table
report.build([report_title, report_table])
В этом фрагменте кода мы использовали класс Table для создания таблицы с данными об инвентаризации фруктов. Мы также применили простой стиль, чтобы добавить границы к ячейкам таблицы и выровнять таблицу по левому краю.
Добавление графики в PDF
Теперь давайте поднимем наш отчет на следующий уровень, добавив графическое представление запасов фруктов в виде круговой диаграммы. Для этого мы будем использовать классы Drawing и Pie в ReportLab.
from reportlab.graphics.shapes import Drawing from reportlab.graphics.charts.piecharts import Pie # Convert the fruit dictionary to separate lists for data and labels report_pie = Pie(width=3*inch, height=3*inch) report_pie.data = [fruit[name] for name in sorted(fruit)] report_pie.labels = [name for name in sorted(fruit)] # Create a Drawing and add the Pie chart to it report_chart = Drawing() report_chart.add(report_pie) # Build the PDF with the title, table, and chart report.build([report_title, report_table, report_chart])
Здесь мы использовали класс Pie для создания круговой диаграммы и добавили ее к объекту Drawing. Круговая диаграмма отображает распределение фруктов на основе данных инвентаризации.

Заключение
Поздравляем! Вы изучили основы создания PDF-файлов с помощью Python и ReportLab. Мы рассмотрели, как создать простой отчет в формате PDF с заголовком, добавить таблицы со стилями и включить графические элементы, такие как круговые диаграммы. Это только верхушка айсберга, поскольку ReportLab предлагает множество дополнительных функций для настройки и улучшения ваших отчетов в формате PDF.
Для дальнейшего изучения возможностей ReportLab я рекомендую вам обратиться к Руководству пользователя ReportLab, которое само по себе представляет собой PDF-файл, сгенерированный с помощью ReportLab. Получайте удовольствие от экспериментов и создания собственных настраиваемых отчетов в формате PDF в соответствии с вашими потребностями в автоматизации!