1. Знайомство з PDFPlumber
Витяг таблиць та складних структур з PDFPlumber
PDFPlumber ідеально підходить для витягу даних з PDF, особливо таблиць та складних структур, таких як колонки. Він дозволяє розпізнати і витягти дані, які складно отримати за допомогою PyPDF2.
Встановлення PDFPlumber
pip install pdfplumber
Витяг таблиць за допомогою PDFPlumber
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
pip install reportlab
Створення простого PDF-документа
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
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`, тільки тепер у нас вона буде виконувати певні задачі.
import PyPDF2
Як простий приклад давайте спробуємо відкрити PDF-документ і прочитати його.
# Відкриваємо файл у бінарному режимі для читання
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'), адже це допомагає уникнути проблем з кодуванням. Як сказав один мудрий програміст, "Баги — це не помилки у вашому коді, це просто несподівані фічі".
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ