1. Основи роботи з ReportLab
Робота з Canvas
Основним інструментом для створення PDF-документів у ReportLab є клас canvas. Він надає методи для додавання тексту, ліній, прямокутників та інших графічних елементів.
Створення простого PDF-файлу з текстом
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
# Створюємо новий PDF-файл
pdf_file = canvas.Canvas("basic_report.pdf", pagesize=A4)
width, height = A4
# Додаємо текст
pdf_file.setFont("Helvetica", 12) # Встановлюємо шрифт і розмір
pdf_file.drawString(100, height - 100, "Привіт! Це звіт, створений за допомогою ReportLab.")
# Зберігаємо і закриваємо PDF
pdf_file.save()
У цьому прикладі створюється простий PDF-файл з текстом "Привіт! Це звіт, створений за допомогою ReportLab." на першій сторінці.
2. Додавання тексту в PDF
ReportLab дозволяє гнучко налаштовувати текст, включаючи розмір, шрифт та колір. Це важливо для створення структурованих звітів, оскільки заголовки, підзаголовки та основний текст можуть виглядати по-різному.
Встановлення шрифту та розміру тексту
Використовуйте метод setFont() для завдання шрифту та розміру тексту. ReportLab підтримує стандартні шрифти, такі як Helvetica, Times-Roman і Courier.
pdf_file.setFont("Helvetica-Bold", 16) # Жирний шрифт
pdf_file.drawString(100, height - 50, "Звіт про продажі") # Заголовок
Зміна кольору тексту
ReportLab підтримує встановлення кольору тексту за допомогою методу setFillColorRGB(), який приймає значення RGB від 0 до 1.
pdf_file.setFillColorRGB(0, 0, 1) # Синій колір
pdf_file.drawString(100, height - 150, "Цей текст синій.")
3. Робота з текстовими блоками та багаторядковим текстом
Якщо текст довгий, його можна форматувати як блок, використовуючи drawString() та задавши координати для кожного рядка. Однак для автоматичного переносу тексту зручніше використовувати drawText() та TextObject.
Додавання багаторядкового тексту з TextObject
text = """
Звіт про продажі за 2023 рік.
Цей звіт містить детальну інформацію про продажі, аналіз даних та прогнози.
"""
# Створення текстового об'єкта
text_object = pdf_file.beginText(100, height - 200)
text_object.setFont("Helvetica", 12)
text_object.setFillColorRGB(0, 0, 0)
# Додавання тексту
for line in text.split("\n"):
text_object.textLine(line)
pdf_file.drawText(text_object)
У цьому прикладі створюється текстовий об'єкт TextObject, який автоматично переносить кожен рядок тексту.
4. Створення багатосторінкових звітів
Багатосторінкові звіти дозволяють розмістити більше даних і створити структуру документа, зручну для читання. У ReportLab для переходу на нову сторінку використовується метод showPage().
Створення багатосторінкового PDF-файлу
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
# Створюємо PDF
pdf_file = canvas.Canvas("multi_page_report.pdf", pagesize=A4)
width, height = A4
# Сторінка 1
pdf_file.setFont("Helvetica-Bold", 16)
pdf_file.drawString(100, height - 100, "Сторінка 1: Вступ")
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "Це перша сторінка звіту.")
pdf_file.showPage() # Перехід на нову сторінку
# Сторінка 2
pdf_file.setFont("Helvetica-Bold", 16)
pdf_file.drawString(100, height - 100, "Сторінка 2: Дані")
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "Це друга сторінка звіту.")
# Збереження та закриття PDF
pdf_file.save()
У цьому прикладі створюється PDF з двома сторінками, кожна з яких має свій заголовок та текст. Метод showPage() завершує поточну сторінку і починає нову.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ