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

سرور مجازی NVMe

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

0 1
زمان لازم برای مطالعه: 4 دقیقه


این مقاله دومین مقاله از مجموعه است روی کار با PDF در پایتون:

معرفی

امروزه دنیایی بدون فرمت سند قابل حمل (PDF) غیرقابل تصور به نظر می رسد. این فرمت به یکی از رایج ترین فرمت های داده تبدیل شده است. تا نسخه PDF 1.4، نمایش یک سند PDF در یک نمایشگر PDF مطابق با آن به خوبی کار می کند. متأسفانه، ویژگی‌های ویرایش‌های PDF جدیدتر، مانند فرم‌ها، برای پیاده‌سازی مشکل هستند و هنوز هم برای کارکرد کامل ابزارها به کار بیشتری نیاز دارند. با استفاده از کتابخانه های مختلف پایتون می توانید اپلیکیشن خود را به روشی آسان و قابل مقایسه ایجاد کنید.

این مقاله قسمت دوم از یک سری کوچک است روی PDF با پایتون در بخش اول، ما قبلاً مقدمه‌ای برای خواندن اسناد PDF با استفاده از پایتون ارائه کردیم و با خلاصه‌ای از کتابخانه‌های مختلف پایتون شروع کردیم. مقدمه ای دنبال شد که روش دستکاری PDF های موجود و روش خواندن و استخراج محتوا – هم متن و هم تصاویر را نشان می داد. علاوه بر این، ما به شما نشان دادیم که چگونه اسناد را به صفحات تکی آن تقسیم کنید.

در این مقاله یاد خواهید گرفت که چگونه تصاویر را به صورت واترمارک، تمبر و بارکد به PDF خود اضافه کنید. به عنوان مثال، برای مهر زدن یا علامت گذاری اسنادی که قرار است توسط یک مخاطب خاص فقط خوانده شوند، یا دارای کیفیت پیش نویس هستند، یا به سادگی یک بارکد برای اهداف شناسایی اضافه کنید، بسیار مفید است.

افزودن واترمارک از طریق خط فرمان با pdftk

به منظور افزودن واترمارک به PDF موجود روی یک یونیکس/لینوکس command-line ما میتوانیم استفاده کنیم pdftk. این نام به اختصار “PDF Toolkit” است و خود را به عنوان “ابزاری ساده برای انجام کارهای روزمره با اسناد PDF” توصیف می کند. pdftk به جاوا پورت شده است و به عنوان یک مطابق در دسترس قرار گرفته است بسته بندی برای دبیان GNU/لینوکس.

برای اینکه این کار انجام شود، باید یک تصویر پس زمینه با کلمه “DRAFT” در دسترس داشته باشید. روی یک لایه شفاف، که می توانید آن را روی یک تک موجود اعمال کنیدpage PDF به صورت زیر:

$ pdftk input.pdf background background.pdf output output.pdf

این pdftk ابزار در فایل PDF می گیرد input.pdf، آن را با آن ادغام می کند background.pdf، و نتیجه را به فایل خروجی می دهد output.pdf. شکل 1 خروجی این عمل را نشان می دهد.

افزودن واترمارک به PDF موجود

برای اقدامات پیچیده تر، مانند مهر کردن یک سند با مهرهای مختلف در هر page، نگاهی به توضیحات در آزمایشگاه PDF بیندازید پروژه page. ما همچنین در این مقاله در زیر کاربرد مهر زنی را نشان می‌دهیم، اگرچه مثال ما از کتابخانه استفاده می‌کند pdfrw بجای pdftk.

اضافه کردن واترمارک با PyPDF2

این کتابخانه PyPDF روشی به نام ارائه می کند mergepage() که PDF دیگری را برای استفاده به عنوان واترمارک یا تمبر می پذیرد.

در مثال زیر با خواندن اولی شروع می کنیم page سند PDF اصلی و واترمارک. برای خواندن فایل از PdfFileReader() کلاس به عنوان مرحله دوم، دو صفحه را با استفاده از ادغام می کنیم mergepage() روش. در نهایت خروجی را در فایل خروجی می نویسیم. این کار در سه مرحله انجام می شود – ایجاد یک شی بر اساس روی را PdfFileWriter() کلاس، اضافه کردن ادغام شده page به این شی با استفاده از addPage() روش، و نوشتن محتوای جدید در خروجی page با استفاده از write() روش.

افزودن واترمارک به PDF موجود با استفاده از PyPDF




import PyPDF2

input_file = "example.pdf"
output_file = "example-drafted.pdf"
watermark_file = "draft.pdf"

with open(input_file, "rb") as filehandle_input:
    
    pdf = PyPDF2.PdfFileReader(filehandle_input)
    
    with open(watermark_file, "rb") as filehandle_watermark:
        
        watermark = PyPDF2.PdfFileReader(filehandle_watermark)
        
        
        first_page = pdf.getPage(0)
        
        
        first_page_watermark = watermark.getPage(0)
        
        
        first_page.mergePage(first_page_watermark)
        
        
        pdf_writer = PyPDF2.PdfFileWriter()
        
        
        pdf_writer.addPage(first_page)
        
        with open(output_file, "wb") as filehandle_output:
            
            pdf_writer.write(filehandle_output)

افزودن تصویر با PyMuPDF

PyMuPDF اتصالات پایتون برای MuPDF است که یک نمایشگر PDF و XPS سبک وزن است. در اسکریپت پایتون ماژولی که باید وارد شود نامگذاری شده است fitzو این نام به نام قبلی PyMuPDF برمی گردد.

برای این بخش می خواهیم روش اضافه کردن تصویر را با استفاده از بارکد به عنوان مثال نشان دهیم زیرا این یک کار بسیار رایج است. اگرچه همین مراحل را می توان برای افزودن هر نوع تصویری به PDF اعمال کرد.

به منظور تزئین یک سند PDF با بارکد، ما به سادگی یک تصویر را به عنوان یک لایه PDF دیگر در موقعیت مورد نظر اضافه می کنیم. در مورد فرمت های تصویر، PyMuPDF PNG یا JPEG را می پذیرد، اما SVG را نمی پذیرد.

موقعیت تصویر با استفاده از روش به صورت مستطیل تعریف می شود fitz.Rect() که به دو جفت مختصات نیاز دارد – (x1,y1) و (x2,y2). PyMuPDF گوشه سمت چپ بالا را تفسیر می کند page به عنوان (0.0).

پس از باز کردن فایل ورودی و استخراج اولین page از آن، تصویر حاوی بارکد با استفاده از روش اضافه می شود insertImage(). این روش به دو پارامتر نیاز دارد – موقعیت ارائه شده از طریق imageRectangleو نام فایل تصویری که قرار است درج شود. با استفاده از save() روشی که پی دی اف اصلاح شده روی دیسک ذخیره می شود. شکل 2 بارکد را پس از اضافه شدن به PDF مثال نشان می دهد.

افزودن بارکد به PDF موجود با استفاده از PyMuPDF



import fitz

input_file = "example.pdf"
output_file = "example-with-barcode.pdf"
barcode_file = "barcode.png"


image_rectangle = fitz.Rect(450,20,550,120)


file_handle = fitz.open(input_file)
first_page = file_handle(0)


first_page.insertImage(image_rectangle, fileName=barcode_file)

file_handle.save(output_file)

اضافه کردن تمبر با pdfrw

pdfrw یک تجزیه کننده PDF خالص مبتنی بر پایتون برای خواندن و نوشتن اسناد PDF است. فرمت های برداری را بدون شطرنجی به طور صادقانه بازتولید می کند. برای دبیان GNU/لینوکس، مخزن بسته حاوی نسخه‌هایی برای پایتون ۲ و ۳ است.

مثال زیر روش افزودن بارکد یا واترمارک به PDF موجود که حاوی چندین صفحه است را نشان می دهد. از pdfrw بسته بندی کافی است که شما import سه کلاس PdfReader، PdfWriter، و PageMerge. در مرحله بعد، اشیاء خواننده و نویسنده مطابق را برای دسترسی به محتویات PDF و واترمارک ایجاد می کنید. برای هر page در سند اصلی به ایجاد a ادامه می دهید PageMerge شیئی که به آن واترمارک اضافه می کنید و با استفاده از آن رندر می شود render() روش. در نهایت، صفحات تغییر یافته را در فایل خروجی می نویسید. شکل 3 سند اصلاح شده را در کنار کدی که امکان افزودن را فراهم کرده است نشان می دهد.

افزودن واترمارک به PDF موجود با استفاده از pdfrw




from pdfrw import PdfReader, PdfWriter, PageMerge

input_file = "example.pdf"
output_file = "example-drafted.pdf"
watermark_file = "barcode.pdf"


reader_input = PdfReader(input_file)
writer_output = PdfWriter()
watermark_input = PdfReader(watermark_file)
watermark = watermark_input.pages(0)


for current_page in range(len(reader_input.pages)):
    merger = PageMerge(reader_input.pages(current_page))
    merger.add(watermark).render()


writer_output.write(output_file, reader_input)

نتیجه

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

قسمت سوم این مجموعه به طور انحصاری تمرکز خواهد داشت روی نوشتن/ایجاد PDF، و همچنین شامل حذف و ترکیب مجدد صفحات منفرد در یک سند جدید می شود.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-22 23:16:03

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

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

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