از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
کار با PDF در پایتون: درج، حذف و مرتب سازی مجدد صفحات
سرفصلهای مطلب
این مقاله سومین مقاله از مجموعه است روی کار با PDF در پایتون:
معرفی
این مقاله قسمت سوم از یک مجموعه کوچک است روی کار با PDF در پایتون در مقالات قبلی مقدمه ای برای خواندن اسناد PDF با استفاده از پایتون ارائه کردیم. تاکنون یاد گرفتهاید که چگونه فایلهای PDF موجود را دستکاری کنید و محتوا را بخوانید و استخراج کنید – هم متن و هم عکس. علاوه بر این، در مورد تقسیم اسناد به صفحات تکی آن و همچنین افزودن واترمارک و بارکد بحث کرده ایم.
اکنون در این مقاله یک قدم فراتر خواهیم رفت و روش تنظیم مجدد یک سند PDF را به چند روش مختلف نشان خواهیم داد.
حذف صفحات با pdfrw
حذف صفحات جداگانه از یک فایل PDF به سادگی موارد زیر است:
- PDF را به عنوان فایل ورودی بخوانید
- صفحات انتخاب شده را به عنوان فایل خروجی در یک PDF جدید بنویسید
مثال زیر دو صفحه اول را از یک سند PDF حذف می کند. با استفاده از pdfrw کتابخانه، فایل با کمک از خوانده می شود PdfReader()
اول کلاس به جز اولی و دومی page، هر یک page با استفاده از گزینه به فایل خروجی اضافه می شود addpage()
روش، و سپس در نهایت روی دیسک نوشته می شود.
شکل 1 هنگام اجرای کد خروجی را نشان می دهد روی چهار-page فایل پی دی اف.
from pdfrw import PdfReader, PdfWriter
input_file = "example.pdf"
output_file = "example-updated.pdf"
reader_input = PdfReader(input_file)
writer_output = PdfWriter()
for current_page in range(len(reader_input.pages)):
if current_page > 1:
writer_output.addpage(reader_input.pages(current_page))
print("adding page %i" % (current_page + 1))
writer_output.write(output_file)
حذف صفحات با PyMuPDF
این PyMuPDF کتابخانه با چند روش پیچیده ارائه می شود که حذف صفحات از یک فایل PDF را ساده می کند. این به شما اجازه می دهد که یکی را مشخص کنید page (با استفاده از deletePage()
روش)، یا طیف وسیعی از page اعداد (با استفاده از deletePageRange()
روش)، یا یک لیست با page اعداد (با استفاده از select()
روش).
مثال زیر روش استفاده از یک لیست را برای انتخاب صفحاتی که از سند اصلی نگهداری می شود را نشان می دهد. توجه داشته باشید که صفحاتی که مشخص نشده اند بخشی از سند خروجی نخواهند بود. در مورد ما سند خروجی فقط شامل صفحات اول، دوم و چهارم است.
import fitz
input_file = "example.pdf"
output_file = "example-rearranged.pdf"
file_handle = fitz.open(input_file)
pages_list = (0,1,3)
file_handle.select(pages_list)
file_handle.save(output_file)
درج صفحات با PyMuPDF
این PyMuPDF
کتابخانه به شما اجازه می دهد تا صفحات را نیز وارد کنید. روش ها را ارائه می دهد newPage()
برای افزودن صفحات کاملاً خالی و insertPage()
به منظور اضافه کردن موجود page. مثال بعدی روش اضافه کردن a را نشان می دهد page از یک سند PDF متفاوت در انتهای یک سند دیگر.
import fitz
original_pdf_path = "example.pdf"
extra_page_path = "extra-page.pdf"
output_file_path = "example-extended.pdf"
original_pdf = fitz.open(original_pdf_path)
extra_page = fitz.open(extra_page_path)
original_pdf.insertPDF(extra_page)
original_pdf.save(output_file_path)
تقسیم صفحات زوج و فرد با PyPDF2
مثال زیر استفاده می کند PyPDF2 و این کار را با گرفتن یک فایل، جدا کردن آن به صفحات زوج و فرد و ذخیره صفحات زوج در فایل انجام می دهد. even.pdf
، و صفحات فرد در odd.pdf
.
این اسکریپت پایتون با تعریف دو فایل خروجی شروع می شود، even.pdf
و odd.pdf
، و همچنین اشیاء نویسنده مربوطه آنها pdf_writer_even
و pdf_writer_odd
. بعد، در یک حلقه for، اسکریپت کل فایل PDF را مرور میکند و یکی را میخواند page پس از دیگری صفحات با زوج page اعداد به جریان اضافه می شوند pdf_writer_even
استفاده کردن addPage()
، و اعداد فرد به جریان اضافه می شوند pdf_writer_odd
. در پایان، دو جریان در فایلهای جداگانه، همانطور که قبلاً تعریف شد، روی دیسک ذخیره میشوند.
from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_document = "example.pdf"
pdf = PdfFileReader(pdf_document)
output_filename_even = "even.pdf"
output_filename_odd = "odd.pdf"
pdf_writer_even = PdfFileWriter()
pdf_writer_odd = PdfFileWriter()
for page in range(pdf.getNumPages()):
current_page = pdf.getPage(page)
if page % 2 == 0:
pdf_writer_odd.addPage(current_page)
else:
pdf_writer_even.addPage(current_page)
with open(output_filename_even, "wb") as out:
pdf_writer_even.write(out)
print("created", output_filename_even)
with open(output_filename_odd, "wb") as out:
pdf_writer_odd.write(out)
print("created", output_filename_odd)
نتیجه
بازنویسی و تنظیم مجدد ساختار یک PDF با کتابخانه ها نسبتاً آسان است pdfrw
، PyMuPDF
، و PyPDF2
. فقط با چند خط کد پایتون می توانید صفحات را حذف کنید، آنها را جدا کنید و محتوای جدید اضافه کنید.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-22 08:43:04