JavaRush /Курси /Python SELF UA /Інші бібліотеки для роботи з PDF у Python

Інші бібліотеки для роботи з PDF у Python

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

1. Знайомство з PDFPlumber

Витяг таблиць та складних структур з PDFPlumber

PDFPlumber ідеально підходить для витягу даних з PDF, особливо таблиць та складних структур, таких як колонки. Він дозволяє розпізнати і витягти дані, які складно отримати за допомогою PyPDF2.

Встановлення PDFPlumber

Python

pip install pdfplumber

Витяг таблиць за допомогою PDFPlumber

Python

import pdfplumber

with pdfplumber.open("sample_with_table.pdf") as pdf:
    for page in pdf.pages:
        table = page.extract_table()
        if table:
            for row in table:
                print(row)

Цей код витягує таблицю з кожної сторінки PDF, що корисно для обробки фінансових та аналітичних звітів, де таблиці представляють основні дані.

2. Знайомство з ReportLab

Створення PDF-звітів за допомогою ReportLab

Якщо ви хочете створити PDF з нуля, наприклад, для звітів або автоматизованих документів, бібліотека ReportLab пропонує гнучкі можливості для створення PDF з текстом, таблицями, зображеннями і графіками.

Встановлення ReportLab

Python

pip install reportlab

Створення простого PDF-документа

Python

from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas

# Створення PDF
pdf_file = canvas.Canvas("generated_report.pdf", pagesize=A4)
width, height = A4

# Додавання заголовка
pdf_file.setFont("Helvetica-Bold", 16)
pdf_file.drawString(100, height - 100, "Звіт про продажі")

# Додавання тексту
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "Цей звіт містить дані про продажі за останній місяць.")

# Збереження PDF
pdf_file.showPage()
pdf_file.save()

Цей код створює PDF із заголовком та текстом. Він також дозволяє додавати логотипи, зображення та інші елементи оформлення.

Створення таблиці в PDF з ReportLab

Python

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle

# Дані для таблиці
data = [
    ["Місяць", "Продажі"],
    ["Січень", "200"],
    ["Лютий", "300"],
    ["Березень", "250"]
]

# Створення PDF з таблицею
pdf_file = SimpleDocTemplate("sales_report.pdf", pagesize=A4)
table = Table(data)
table.setStyle(TableStyle([
    ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
    ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
    ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
    ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
    ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
    ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
]))

# Побудова PDF
elements = [table]
pdf_file.build(elements)

Цей код створює таблицю і зберігає її у PDF. З допомогою ReportLab можна також додавати стилі, змінювати кольори, розміри шрифтів та форматувати текст.

3. Повертаємося до PyPDF2

Чому PyPDF2?

Як ви знаєте, PDF-документи — це практично стандарт для всіх видів документації, від звітів до білих паперів. Але, коли йдеться про автоматизацію, працювати з PDF у Python може бути справжньою головоломкою. PyPDF2 допомагає вибратися з цієї трясовини: вона дозволяє витягувати текст, об'єднувати та розділяти сторінки, а також багато іншого. І робота з нею — суцільна насолода. Взагалі, це як гарна ранкова чашка кави для кодера, тільки вона не збуджує, а заспокоює!

Давайте трохи пройдемося по мінімальному функціоналу, який пропонує нам PyPDF2. Це допоможе підготуватися до складніших завдань, адже без поступового старту можна легко заплутатися.

Імпорт і базовий приклад

Перше, що нам потрібно зробити — імпортувати бібліотеку. Як старий добрий `import this`, тільки тепер у нас вона буде виконувати певні задачі.

Python

import PyPDF2

Як простий приклад давайте спробуємо відкрити PDF-документ і прочитати його.

Python

# Відкриваємо файл у бінарному режимі для читання
with open('example.pdf', 'rb') as pdf_file:
    # Створюємо об'єкт PDFReader
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    # Витягуємо текст з першої сторінки
    page = pdf_reader.pages[0]
    text = page.extract_text()
    print(text)

Цей код робить все, що потрібно для початку: відкриває PDF-документ, витягує текст з першої сторінки та виводить його. Просто і зі смаком.

Огляд функціоналу PyPDF2

PyPDF2 надає багато функцій для роботи з PDF:

  • Витяг тексту: вже розглянули.
  • Об'єднання PDF: створюємо новий PDF-документ, об'єднуючи кілька існуючих.
  • Розділення сторінок: виділяємо потрібні сторінки і зберігаємо їх в окремі файли.
  • Додавання анотацій і коментарів: ну це вже взагалі high-level!

На цьому етапі у вас повинно бути загальне уявлення про те, як працює PyPDF2 і які можливості вона надає. Звісно, за одне заняття все опанувати нереально, але ми збираємось крок за кроком вивчати, що ця бібліотека може запропонувати.

Зворотний зв'язок та типові помилки

Часто код не працює з першого разу, і кожне навчання перетворюється на "hunt the bug". Найпоширеніша помилка при використанні PyPDF2 — це неправильний шлях до файлу. Переконайтеся, що ваш PDF-документ знаходиться в тій же директорії, що і ваш скрипт, або вказуйте повний шлях. Крім того, не забувайте відкривати файли у бінарному режимі ('rb'), адже це допомагає уникнути проблем з кодуванням. Як сказав один мудрий програміст, "Баги — це не помилки у вашому коді, це просто несподівані фічі".

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