آخرین به‌روزرسانی: ۲۹ ژانویه ۲۰۲۵

عنوان - کار با فایل‌های PDF در پایتون

در این مقاله، راهنمایی می‌کنیم که چگونه با فایل‌های PDF با استفاده از پایتون کار کنید. برای این کار، از کتابخانه pypdf استفاده خواهیم کرد.

با استفاده از کتابخانه pypdf، عملیات‌های زیر را در پایتون نشان خواهیم داد:

  • استخراج متن از PDF
  • چرخاندن صفحات PDF
  • ادغام چندین PDF
  • تقسیم PDF‌ها به فایل‌های مجزا
  • افزودن واترمارک به صفحات PDF

توجه: این مقاله شامل جزئیات ارزشمندی است، بنابراین در صورت نیاز به قسمت‌های مورد علاقه‌تان مستقیماً بروید! محتوا به گونه‌ای سازماندهی شده است که بتوانید به راحتی بر روی مواردی که برای شما مهم‌ترین است تمرکز کنید.

تصویر - کار با فایل‌های PDF در پایتون

کدهای نمونه

شما می‌توانید تمام کدهای نمونه استفاده شده در این مقاله را از لینک زیر دانلود کنید. این شامل کدها، فایل‌های ورودی، و فایل‌های خروجی است.

نصب pypdf

برای نصب pypdf، کافی است دستور زیر را در ترمینال یا کامند پرامپت خود اجرا کنید:

pip install pypdf

توجه: دستور بالا به حروف بزرگ و کوچک حساس است.

۱. استخراج متن از یک فایل PDF با استفاده از پایتون

توضیح کد

۱. ایجاد یک شیء خواننده PDF

reader = PdfReader(pdf_file)
  • PdfReader(pdf_file) فایل PDF را به یک شیء خواننده بارگذاری می‌کند.
  • این شیء امکان دسترسی به صفحات و محتوای آنان را فراهم می‌کند.

۲. حلقه زدن بر روی صفحات

for page_number, page in enumerate(reader.pages, start=1):
  • reader.pages لیستی از صفحات در فایل PDF بر می‌گرداند.
  • enumerate(..., start=1) یک شماره صفحه از ۱ به بالا اختصاص می‌دهد.

۳. چاپ متن استخراج شده

    print(f"Page {page_number}:")
    print(page.extract_text())
    print("-" * 50)  # جداکننده برای خوانایی
  • page.extract_text() محتویات متنی را از صفحه جاری استخراج می‌کند.
  • اسکریپت متن استخراج شده را به همراه شماره صفحه چاپ می‌کند.
  • "-" * 50 یک خط جداکننده (--------------------------------------------------) برای خوانایی بهتر چاپ می‌کند.

فایل PDF ورودی استفاده شده در کد

خروجی کد

۲. چرخاندن صفحات PDF با استفاده از پایتون

توضیح کد

کد اساساً اولین صفحه را به ۹۰ درجه در جهت موافق ساعت می‌چرخاند و فایل PDF تغییر یافته را بدون تاثیر بر روی سایر صفحات ذخیره می‌کند.

۱. وارد کردن کلاس‌های مورد نیاز

from pypdf import PdfReader, PdfWriter
  • PdfReader: فایل PDF ورودی را می‌خواند.
  • PdfWriter: یک PDF جدید با تغییرات ایجاد می‌کند.

۲. تعریف مسیر فایل‌های ورودی و خروجی

input_pdf = "pdf-to-rotate/input.pdf"
output_pdf = "pdf-to-rotate/rotated_output.pdf"
  • اسکریپت از input.pdf می‌خواند و فایل تغییر یافته را به عنوان rotated_output.pdf ذخیره می‌کند.

۳. خواندن PDF و ایجاد یک شیء نویسنده

reader = PdfReader(input_pdf)
writer = PdfWriter()
  • reader فایل PDF موجود را بارگذاری می‌کند.
  • writer برای ذخیره صفحات تغییر یافته استفاده می‌شود.

۴. چرخاندن اولین صفحه به اندازه ۹۰ درجه

page = reader.pages[0]
page.rotate(90)  # چرخش ۹۰ درجه در جهت موافق ساعت
writer.add_page(page)
  • صفحه ۱ را استخراج می‌کند، به اندازه ۹۰ درجه می‌چرخاند و آن را به PDF جدید اضافه می‌کند.

۵. اضافه کردن صفحات باقی‌مانده بدون تغییر

for i in range(1, len(reader.pages)):
    writer.add_page(reader.pages[i])
  • بر روی سایر صفحات حلقه می‌زند و آنان را به همان صورت اضافه می‌کند.

۶. ذخیره PDF جدید

with open(output_pdf, "wb") as file:
    writer.write(file)
  • rotated_output.pdf را در حالت نوشتن باینری باز می‌کند و PDF جدید را ذخیره می‌کند.

۷. چاپ تاییدیه

print(f"Rotated page saved to {output_pdf}")
  • پیامی به منظور موفقیت‌آمیز بودن نمایش می‌دهد.

فایل PDF ورودی استفاده شده در کد و خروجی چرخانده شده

تصویر تصویر صفحه چرخانده شده در PDF با استفاده از پایتون

۳. ادغام فایل‌های PDF با استفاده از پایتون

این اسکریپت پایتون نحوه ادغام چندین فایل PDF از یک دایرکتوری را در یک PDF واحد با استفاده از کتابخانه PyPDF نشان می‌دهد.

توضیح کد

  • این اسکریپت تمام فایل‌های PDF موجود در دایرکتوری مشخص شده (pdfs-to-merge) را به طور خودکار ادغام و به یک فایل خروجی واحد (merged_output.pdf) ذخیره می‌کند.
  • مطمئن می‌شود دایرکتوری خروجی موجود است و صفحات هر PDF را به ترتیب لیست‌شده اضافه می‌کند.
  • فایل نهایی ادغام شده را در زیرپوشه output-dir خروجی می‌دهد.

جزئیات کد

۱. وارد کردن کتابخانه‌ها

import os
from pypdf import PdfReader, PdfWriter
  • os: برای تعامل با سیستم فایل استفاده می‌شود، مانند خواندن دایرکتوری‌ها و مدیریت مسیرهای فایل.
  • PdfReader: محتوای یک فایل PDF را می‌خواند.
  • PdfWriter: یک فایل PDF جدید ایجاد و می‌نویسد.

۲. تعریف دایرکتوری و فایل خروجی

directory = "pdfs-to-merge"
output_file = "output-dir/merged_output.pdf"
  • directory: پوشه‌ای که فایل‌های PDF در آن ذخیره شده‌اند را مشخص می‌کند.
  • output_file: مسیر خروجی و نام فایل PDF ادغام شده را تعریف می‌کند.

۳. ایجاد دایرکتوری خروجی در صورت عدم وجود

os.makedirs(os.path.join(directory, "output-dir"), exist_ok=True)
  • اطمینان می‌دهد که دایرکتوری خروجی موجود است و در صورت عدم وجود آن، آن را ایجاد می‌کند.

۴. ایجاد یک شیء PdfWriter

writer = PdfWriter()
  • writer برای جمع‌آوری و ترکیب تمام صفحات از فایل‌های PDF استفاده می‌شود.

۵. تکرار بر روی تمام فایل‌های PDF در داخل دایرکتوری

for file_name in sorted(os.listdir(directory)):
    if file_name.endswith(".pdf"):
        file_path = os.path.join(directory, file_name)
        print(f"Adding: {file_name}")
  • این حلقه تمام فایل‌ها در دایرکتوری مشخص‌شده را بررسی و به دنبال فایل‌هایی با پسوند .pdf می‌گردد. از sorted() برای پردازش آن‌ها به ترتیب حروف الفبا استفاده می‌کند.

۶. خواندن هر PDF و اضافه کردن صفحات به نویسنده

reader = PdfReader(file_path)
writer.append(reader)
  • برای هر PDF، PdfReader فایل را خوانده و سپس تمام صفحات آن PDF به writer اضافه می‌شوند.

۷. نوشتن فایل PDF ادغام شده به یک فایل خروجی

output_path = os.path.join(directory, output_file)
with open(output_path, "wb") as output_pdf:
    writer.write(output_pdf)
  • پس از جمع‌آوری تمام صفحات، writer.write() PDF ادغام شده را به مسیر خروجی مشخص‌شده می‌نویسد.

۸. چاپ تأییدیه

print(f"Merged PDF saved as: {output_path}")
  • یک پیام موفقیت‌آمیز برای تایید مکان ذخیره شده فایل PDF ادغام شده نمایش می‌دهد.

فایل‌های PDF ورودی استفاده شده در کد و فایل PDF خروجی ادغام شده

۴. تقسیم یک PDF با استفاده از پایتون

توضیح کد

اسکریپت پایتون بالا یک فایل PDF را با استفاده از کتابخانه PyPDF به صفحات جداگانه تقسیم می‌کند. ابتدا مطمئن می‌شود که دایرکتوری خروجی وجود دارد، سپس فایل PDF ورودی را می‌خواند. اسکریپت برای هر صفحه یک شیء PdfWriter جدید ایجاد کرده و هر صفحه را به عنوان یک فایل PDF مجزا ذخیره می‌کند. فایل‌های خروجی به ترتیب نامگذاری شده‌اند (مثلاً page_1.pdf, page_2.pdf) و در پوشه output-dir ذخیره می‌شوند. در نهایت، یک پیام تایید برای هر فایل ایجاد شده نمایش می‌دهد و فرآیند را تکمیل می‌کند.

فایل PDF ورودی و فایل‌های خروجی تقسیم‌شده

۵. افزودن واترمارک به یک فایل PDF با استفاده از پایتون

می‌توانید با استفاده از کتابخانه PyPDF واترمارک را به یک PDF اضافه کنید، به طوری که یک PDF واترمارک روی یک PDF موجود قرار گیرد. اطمینان حاصل کنید که PDF واترمارک دارای تنها یک صفحه باشد تا به درستی بر روی هر صفحه از PDF اصلی اعمال شود.

توضیح کد

اسکریپت پایتون بالا یک فایل PDF ورودی را می‌خواند، یک فایل PDF واترمارک تک صفحه‌ای را استخراج می‌کند، واترمارک را بر روی هر صفحه از فایل PDF ورودی اعمال می‌کند و فایل PDF خروجی که حاوی واترمارک است را ذخیره می‌کند.

جزئیات کد

در اینجا توضیح مختصری در مورد هر قسمت آورده شده است

۱. وارد کردن کلاس‌های مورد نیاز

from pypdf import PdfReader, PdfWriter
  • PdfReader برای خواندن فایل‌های PDF موجود استفاده می‌شود.
  • PdfWriter برای ایجاد و نوشتن یک فایل PDF جدید استفاده می‌شود.

۲. تعریف مسیر فایل‌ها

input_pdf = "pdf-to-watermark/input.pdf"
watermark_pdf = "pdf-to-watermark/watermark.pdf"
output_pdf = "pdf-to-watermark/output_with_watermark.pdf"
  • input_pdf: فایل PDF اصلی که قرار است واترمارک به آن اضافه شود.
  • watermark_pdf: یک PDF تک صفحه‌ای جداگانه که به عنوان واترمارک عمل می‌کند.
  • output_pdf: فایل خروجی که حاوی صفحات دارای واترمارک خواهد بود.

۳. خواندن فایل‌های PDF

reader = PdfReader(input_pdf)
watermark = PdfReader(watermark_pdf)
  • reader: فایل PDF ورودی را می‌خواند.
  • watermark: فایل PDF واترمارک را می‌خواند.

۴. ایجاد یک شیء نویسنده

writer = PdfWriter()
  • این برای ایجاد فایل نهایی حاوی واترمارک استفاده خواهد شد.

۵. استخراج صفحه واترمارک

watermark_page = watermark.pages[0]
  • فرض می‌کند که فایل PDF واترمارک تنها یک صفحه دارد که برای قرارگیری بر روی تمام صفحات استفاده می‌شود.

۶. حلقه بر روی صفحات فایل PDF ورودی و ادغام واترمارک

for page in reader.pages:
    # ادغام واترمارک با صفحه جاری
    page.merge_page(watermark_page)
    
    # اضافه کردن صفحه ادغام شده به نویسنده
    writer.add_page(page)
  • بر روی هر صفحه از input_pdf تکرار می‌شود.
  • merge_page(watermark_page) واترمارک را روی صفحه جاری قرار می‌دهد.
  • صفحه تغییر داده شده را به writer اضافه می‌کند.

۷. ذخیره فایل PDF حاوی واترمارک

with open(output_pdf, "wb") as output_file:
    writer.write(output_file)
  • صفحات تغییر داده شده را در یک فایل PDF جدید می‌نویسد.

۸. چاپ تأییدیه

print(f"Watermarked PDF saved as: {output_pdf}")
  • مسیر فایل خروجی را برای تایید نمایش می‌دهد.

فایل PDF ورودی، فایل PDF واترمارک، و فایل PDF خروجی

تصویر تصویر PDF دارای واترمارک با استفاده از پایتون

نتیجه‌گیری

در این راهنما، به عملیات‌های اساسی PDF در پایتون از جمله استخراج متن، چرخاندن صفحات، ادغام کردن، تقسیم کردن، و افزودن واترمارک پرداختیم. با این مهارت‌ها، اکنون می‌توانید مدیر فایل PDF خود را بسازید و وظایف مختلف PDF را به طور موثری خودکار کنید.