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

در این مقاله، راهنمایی میکنیم که چگونه با فایلهای PDF با استفاده از پایتون کار کنید. برای این کار، از کتابخانه pypdf استفاده خواهیم کرد.
با استفاده از کتابخانه pypdf، عملیاتهای زیر را در پایتون نشان خواهیم داد:
- استخراج متن از 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 از یک دایرکتوری را در یک 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 خروجی ادغام شده: لینک دانلود
۴. تقسیم یک PDF با استفاده از پایتون
توضیح کد
اسکریپت پایتون بالا یک فایل PDF را با استفاده از کتابخانه PyPDF به صفحات جداگانه تقسیم میکند. ابتدا مطمئن میشود که دایرکتوری خروجی وجود دارد، سپس فایل PDF ورودی را میخواند. اسکریپت برای هر صفحه یک شیء PdfWriter جدید ایجاد کرده و هر صفحه را به عنوان یک فایل PDF مجزا ذخیره میکند. فایلهای خروجی به ترتیب نامگذاری شدهاند (مثلاً page_1.pdf, page_2.pdf) و در پوشه output-dir
ذخیره میشوند. در نهایت، یک پیام تایید برای هر فایل ایجاد شده نمایش میدهد و فرآیند را تکمیل میکند.
فایل PDF ورودی و فایلهای خروجی تقسیمشده
- فایل 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 در پایتون از جمله استخراج متن، چرخاندن صفحات، ادغام کردن، تقسیم کردن، و افزودن واترمارک پرداختیم. با این مهارتها، اکنون میتوانید مدیر فایل PDF خود را بسازید و وظایف مختلف PDF را به طور موثری خودکار کنید.