وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

کار با PDF در پایتون: درج، حذف و مرتب سازی مجدد صفحات

0 10
زمان لازم برای مطالعه: 3 دقیقه


این مقاله سومین مقاله از مجموعه است روی کار با 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)

دو صفحه اول را از یک PDF حذف کنید

حذف صفحات با 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

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید