JavaRush /Курсы /Python SELF /Другие библиотеки для работы с PDF в Python

Другие библиотеки для работы с PDF в Python

Python SELF
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'), так как это помогает избежать проблем с кодировкой. Как говорил один мудрый программист, "Баги — это не ошибки в вашем коде, это просто неожиданные фичи".

Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 64
1 августа 2025
Четвертое задание: Интересно копаться в больших объемах чужого кода, чтобы найти где и как приткнуть то свое задание, которое требуется. За это лайк
Vlad Tagunkov Уровень 55
18 января 2025
в третьей задаче порядок добавления имеет значение.