JavaRush /Курси /Python SELF UA /Основи створення PDF з текстом для автоматизації звітност...

Основи створення PDF з текстом для автоматизації звітності

Python SELF UA
Рівень 44 , Лекція 2
Відкрита

1. Основи роботи з ReportLab

Робота з Canvas

Основним інструментом для створення PDF-документів у ReportLab є клас canvas. Він надає методи для додавання тексту, ліній, прямокутників та інших графічних елементів.

Створення простого PDF-файлу з текстом

Python

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.

Python

pdf_file.setFont("Helvetica-Bold", 16)  # Жирний шрифт
pdf_file.drawString(100, height - 50, "Звіт про продажі")  # Заголовок

Зміна кольору тексту

ReportLab підтримує встановлення кольору тексту за допомогою методу setFillColorRGB(), який приймає значення RGB від 0 до 1.

Python

pdf_file.setFillColorRGB(0, 0, 1)  # Синій колір
pdf_file.drawString(100, height - 150, "Цей текст синій.")

3. Робота з текстовими блоками та багаторядковим текстом

Якщо текст довгий, його можна форматувати як блок, використовуючи drawString() та задавши координати для кожного рядка. Однак для автоматичного переносу тексту зручніше використовувати drawText() та TextObject.

Додавання багаторядкового тексту з TextObject

Python

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-файлу

Python

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() завершує поточну сторінку і починає нову.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ