از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
کار با PDF در پایتون: افزودن تصاویر و واترمارک
سرفصلهای مطلب
این مقاله دومین مقاله از مجموعه است روی کار با 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 خروجی این عمل را نشان می دهد.
برای اقدامات پیچیده تر، مانند مهر کردن یک سند با مهرهای مختلف در هر page، نگاهی به توضیحات در آزمایشگاه PDF بیندازید پروژه page. ما همچنین در این مقاله در زیر کاربرد مهر زنی را نشان میدهیم، اگرچه مثال ما از کتابخانه استفاده میکند pdfrw
بجای pdftk
.
اضافه کردن واترمارک با PyPDF2
این کتابخانه PyPDF روشی به نام ارائه می کند mergepage()
که PDF دیگری را برای استفاده به عنوان واترمارک یا تمبر می پذیرد.
در مثال زیر با خواندن اولی شروع می کنیم page سند PDF اصلی و واترمارک. برای خواندن فایل از PdfFileReader()
کلاس به عنوان مرحله دوم، دو صفحه را با استفاده از ادغام می کنیم mergepage()
روش. در نهایت خروجی را در فایل خروجی می نویسیم. این کار در سه مرحله انجام می شود – ایجاد یک شی بر اساس روی را PdfFileWriter()
کلاس، اضافه کردن ادغام شده page به این شی با استفاده از addPage()
روش، و نوشتن محتوای جدید در خروجی page با استفاده از write()
روش.
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 مثال نشان می دهد.
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 سند اصلاح شده را در کنار کدی که امکان افزودن را فراهم کرده است نشان می دهد.
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