کار با PDF در پایتون با استفاده از PyPDF2
در دنیای امروز، فایلهای PDF به عنوان یکی از رایجترین فرمتها برای به اشتراکگذاری و آرشیو اسناد مورد استفاده قرار میگیرند. پایتون، به عنوان یک زبان برنامهنویسی قدرتمند و انعطافپذیر، ابزارهای متعددی برای کار با این نوع فایلها ارائه میدهد. یکی از محبوبترین و کاربردیترین این ابزارها، کتابخانه PyPDF2 است. این مقاله به بررسی جامع این کتابخانه، قابلیتها و نحوه استفاده از آن برای انجام عملیات مختلف بر روی فایلهای PDF میپردازد. این آموزش در دسته ‘کتابخانههای خاص و کاربردی’ در حوزه آموزش پایتون قرار میگیرد.
مقدمهای بر PyPDF2
PyPDF2 یک کتابخانه پایتون خالص است که برای خواندن، نوشتن، تقسیم و ادغام فایلهای PDF طراحی شده است. این کتابخانه به شما امکان میدهد تا به محتوای PDF دسترسی پیدا کنید، متن را استخراج کنید، صفحات را دستکاری کنید و حتی فایلهای PDF جدید ایجاد کنید. PyPDF2 به دلیل سادگی و کارایی، به یک انتخاب محبوب در بین توسعهدهندگان پایتون تبدیل شده است.
نصب PyPDF2
قبل از شروع کار با PyPDF2، باید آن را نصب کنید. برای این کار میتوانید از pip، مدیر بسته پایتون، استفاده کنید. کافی است دستور زیر را در ترمینال یا خط فرمان خود اجرا کنید:
pip install PyPDF2
مفاهیم کلیدی در PyPDF2
برای درک بهتر نحوه کار با PyPDF2، لازم است با مفاهیم کلیدی آن آشنا شوید:
- PdfFileReader: این کلاس برای خواندن فایلهای PDF موجود استفاده میشود.
- PdfFileWriter: این کلاس برای ایجاد فایلهای PDF جدید یا ویرایش فایلهای موجود استفاده میشود.
- PageObject: این کلاس نشاندهنده یک صفحه در فایل PDF است.
- Document: یک شیء که کل سند PDF را نشان میدهد.
خواندن فایل PDF
برای خواندن یک فایل PDF، ابتدا باید یک شیء PdfFileReader ایجاد کنید و فایل PDF را به آن پاس دهید. سپس میتوانید به اطلاعات مختلفی از فایل PDF دسترسی پیدا کنید، مانند تعداد صفحات، عنوان سند و نویسنده.
import PyPDF2
# باز کردن فایل PDF
pdf_file = open('example.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
# دریافت تعداد صفحات
num_pages = pdf_reader.getNumPages()
print(f"تعداد صفحات: {num_pages}")
# دریافت اطلاعات سند
document_info = pdf_reader.getDocumentInfo()
print(f"عنوان: {document_info.title}")
print(f"نویسنده: {document_info.author}")
# بستن فایل PDF
pdf_file.close()
استخراج متن از فایل PDF
یکی از کاربردهای رایج PyPDF2، استخراج متن از فایلهای PDF است. برای این کار میتوانید از متد getText() در شیء PageObject استفاده کنید. برای استخراج متن از تمام صفحات، باید بر روی تمام صفحات فایل PDF حلقه بزنید.
import PyPDF2
# باز کردن فایل PDF
pdf_file = open('example.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
# استخراج متن از تمام صفحات
text = ""
for page_num in range(pdf_reader.getNumPages()):
page = pdf_reader.getPage(page_num)
text += page.extractText()
# چاپ متن استخراج شده
print(text)
# بستن فایل PDF
pdf_file.close()
ایجاد فایل PDF جدید
PyPDF2 به شما امکان میدهد تا فایلهای PDF جدید ایجاد کنید. برای این کار باید یک شیء PdfFileWriter ایجاد کنید و صفحات مورد نظر خود را به آن اضافه کنید. سپس میتوانید فایل PDF جدید را ذخیره کنید.
import PyPDF2
# ایجاد یک شیء PdfFileWriter
pdf_writer = PyPDF2.PdfFileWriter()
# ایجاد یک صفحه جدید
page = PyPDF2.pdf.PageObject.create_blank_page(None, 200, 200)
pdf_writer.addPage(page)
# ذخیره فایل PDF جدید
with open('new_file.pdf', 'wb') as output_file:
pdf_writer.write(output_file)
ادغام فایلهای PDF
یکی دیگر از قابلیتهای PyPDF2، ادغام فایلهای PDF است. برای این کار باید فایلهای PDF مورد نظر خود را باز کنید، صفحات آنها را به یک شیء PdfFileWriter اضافه کنید و سپس فایل PDF جدید را ذخیره کنید.
import PyPDF2
# باز کردن فایلهای PDF
pdf_file1 = open('file1.pdf', 'rb')
pdf_reader1 = PyPDF2.PdfFileReader(pdf_file1)
pdf_file2 = open('file2.pdf', 'rb')
pdf_reader2 = PyPDF2.PdfFileReader(pdf_file2)
# ایجاد یک شیء PdfFileWriter
pdf_writer = PyPDF2.PdfFileWriter()
# اضافه کردن صفحات از فایل اول
for page_num in range(pdf_reader1.getNumPages()):
page = pdf_reader1.getPage(page_num)
pdf_writer.addPage(page)
# اضافه کردن صفحات از فایل دوم
for page_num in range(pdf_reader2.getNumPages()):
page = pdf_reader2.getPage(page_num)
pdf_writer.addPage(page)
# ذخیره فایل PDF جدید
with open('merged_file.pdf', 'wb') as output_file:
pdf_writer.write(output_file)
# بستن فایلها
pdf_file1.close()
pdf_file2.close()
تقسیم فایل PDF
PyPDF2 به شما امکان میدهد تا یک فایل PDF را به چند فایل PDF کوچکتر تقسیم کنید. برای این کار میتوانید از متدهای split() یا slice() استفاده کنید.
import PyPDF2
# باز کردن فایل PDF
pdf_file = open('example.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
# تقسیم فایل PDF به دو قسمت
split_page = 2
pdf_writer1 = PyPDF2.PdfFileWriter()
pdf_writer2 = PyPDF2.PdfFileWriter()
for page_num in range(split_page):
page = pdf_reader.getPage(page_num)
pdf_writer1.addPage(page)
for page_num in range(split_page, pdf_reader.getNumPages()):
page = pdf_reader.getPage(page_num)
pdf_writer2.addPage(page)
# ذخیره فایلهای PDF جدید
with open('part1.pdf', 'wb') as output_file1:
pdf_writer1.write(output_file1)
with open('part2.pdf', 'wb') as output_file2:
pdf_writer2.write(output_file2)
# بستن فایل PDF
pdf_file.close()
چرخش صفحات PDF
PyPDF2 به شما امکان میدهد تا صفحات PDF را بچرخانید. برای این کار میتوانید از متد rotateClockwise() یا rotateCounterClockwise() در شیء PageObject استفاده کنید.
import PyPDF2
# باز کردن فایل PDF
pdf_file = open('example.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
# ایجاد یک شیء PdfFileWriter
pdf_writer = PyPDF2.PdfFileWriter()
# چرخش صفحه اول به اندازه 90 درجه در جهت عقربههای ساعت
page = pdf_reader.getPage(0)
page.rotateClockwise(90)
pdf_writer.addPage(page)
# اضافه کردن سایر صفحات
for page_num in range(1, pdf_reader.getNumPages()):
page = pdf_reader.getPage(page_num)
pdf_writer.addPage(page)
# ذخیره فایل PDF جدید
with open('rotated_file.pdf', 'wb') as output_file:
pdf_writer.write(output_file)
# بستن فایل PDF
pdf_file.close()
امنیت فایلهای PDF
PyPDF2 به شما امکان میدهد تا فایلهای PDF را رمزگذاری و رمزگشایی کنید. برای رمزگذاری یک فایل PDF، میتوانید از متد encrypt() در شیء PdfFileWriter استفاده کنید. برای رمزگشایی یک فایل PDF، میتوانید از متد decrypt() در شیء PdfFileReader استفاده کنید.
نتیجهگیری
PyPDF2 یک کتابخانه قدرتمند و انعطافپذیر برای کار با فایلهای PDF در پایتون است. این کتابخانه به شما امکان میدهد تا به راحتی فایلهای PDF را بخوانید، بنویسید، تقسیم کنید، ادغام کنید، بچرخانید و رمزگذاری کنید. با استفاده از PyPDF2، میتوانید به طور موثری با فایلهای PDF در برنامههای پایتون خود کار کنید و نیازهای خود را برآورده کنید. این کتابخانه به دلیل سادگی و کارایی، یک انتخاب عالی برای توسعهدهندگان پایتون است که با فایلهای PDF سروکار دارند.

بدون دیدگاه