تبدیل مجموعه‌ای از تصاویر پراکنده به یک PDF تک و قابل جستجو، یک نیاز متداول برای ابزارهای گزارش‌گیری، تولیدکنندگان فاکتور و سیستم‌های بایگانی است. Aspose.PDF for Python via .NET یک SDK قدرتمند است که این تبدیل را به‌صورت سریع و قابل اطمینان در برنامه‌های Python انجام می‌دهد. این راهنما شما را در نصب SDK، بارگذاری تصاویر با کتابخانه Python Imaging Library، ساخت PDF صفحه به صفحه، تنظیمات فشرده‌سازی، و در نهایت ذخیره نتیجه، همراه با مثال‌های کد واضح، راهنمایی می‌کند.

قبل از شروع: پیش‌نیازها و نصب

برای دنبال کردن این آموزش به موارد زیر نیاز دارید:

  • Python 3.8 یا جدیدتر نصب شده بر روی ماشین توسعه شما.
  • یک IDE یا ویرایشگر به انتخاب شما (VS Code، PyCharm، و غیره).
  • دسترسی به اینترنت برای دانلود بسته SDK.

Aspose.PDF SDK و کتابخانه Pillow (کتابخانه تصویری پیش‌فرض پایتون) را با pip نصب کنید:

pip install aspose-pdf pillow

شما همچنین می‌توانید SDK را به‌صورت دستی از صفحهٔ رسمی انتشار دانلود کنید: Aspose.PDF for Python via .NET Download. پس از نصب، فضای‌نام‌های مورد نیاز را در اسکریپت خود وارد کنید.

حالا که محیط آماده است، بیایید به پیاده‌سازی بپردازیم.

ایجاد PDF از تصاویر در Python: راهنمای گام به گام

مرحله 1: بارگذاری تصاویر منبع

ابتدا از Pillow استفاده کنید تا هر فایل تصویر را باز کنید و آنها را در یک لیست نگه دارید. این کار داده‌های تصویر را برای سازنده PDF آماده می‌کند.

from PIL import Image
import os

image_folder = "input_images"
image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder)
               if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]

images = [Image.open(p) for p in image_paths]

مرحله ۲: ایجاد یک سند PDF جدید

یک شیء Document از Aspose.PDF را ایجاد کنید که صفحات را نگه می‌دارد.

import aspose.pdf as ap

pdf_doc = ap.Document()

برای جزئیات بیشتر در مورد کلاس Document، به مرجع API مراجعه کنید.

مرحله ۳: افزودن هر تصویر به عنوان یک صفحه جداگانه

در میان تصاویر بارگذاری‌شده حلقه بزنید، یک صفحه ایجاد کنید و تصویر را درون‌گذاری کنید. SDK به‌صورت خودکار تصویر را برای متناسب شدن با اندازه صفحه مقیاس می‌دهد.

for img in images:
    page = pdf_doc.pages.add()
    # Convert Pillow image to a byte stream compatible with Aspose.PDF
    with io.BytesIO() as img_stream:
        img.save(img_stream, format='PNG')
        img_stream.seek(0)
        page.resources.images.add(ap.Image(img_stream))
        # Fit the image to the page dimensions
        page.page_info.width = img.width
        page.page_info.height = img.height

مرحله 4: پیکربندی گزینه‌های فشرده‌سازی

سطح فشرده‌سازی تصویر را تنظیم کنید تا اندازه نهایی PDF را بدون قربانی کردن کیفیت کاهش دهید.

# Set JPEG compression for all images (if using JPEG format)
for img_res in pdf_doc.resources.images:
    img_res.compression = ap.ImageCompression.JPEG
    img_res.jpeg_quality = 80  # Quality range: 0‑100

مرحله 5: ذخیره فایل PDF

در نهایت، سند ترکیب‌شده را بر روی دیسک بنویسید.

output_path = "output/result.pdf"
pdf_doc.save(output_path)
print(f"PDF generated successfully at {output_path}")

با این مراحل، یک جریان کاری کاملاً کارآمد برای تولید PDF از تصاویر در Python دارید.

ایجاد PDF از مجموعه تصاویر در پایتون - مثال کامل کد

اسکریپت زیر تمام قطعات را در یک برنامهٔ قابل اجرا ترکیب می‌کند.

import os
import io
from PIL import Image
import aspose.pdf as ap

# -------------------- Configuration --------------------
image_folder = "input_images"          # Folder containing source images
output_pdf = "output/result.pdf"       # Destination PDF file
jpeg_quality = 80                      # Compression quality (0‑100)

# -------------------- Load Images --------------------
image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder)
               if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]

images = [Image.open(p) for p in image_paths]

# -------------------- Create PDF Document --------------------
pdf_doc = ap.Document()

for img in images:
    page = pdf_doc.pages.add()
    with io.BytesIO() as img_stream:
        img.save(img_stream, format='PNG')
        img_stream.seek(0)
        pdf_image = page.resources.images.add(ap.Image(img_stream))
        page.page_info.width = img.width
        page.page_info.height = img.height
        # Apply compression if the original is JPEG
        if img.format == 'JPEG':
            pdf_image.compression = ap.ImageCompression.JPEG
            pdf_image.jpeg_quality = jpeg_quality

# -------------------- Save PDF --------------------
pdf_doc.save(output_pdf)
print(f"PDF generated successfully at {output_pdf}")

توجه: این مثال کد عملکرد اصلی را نشان می‌دهد. قبل از استفاده از آن در پروژه‌تان، مطمئن شوید مسیرهای فایل (input_images، output/result.pdf) به‌روز شده‌اند، تأیید کنید که تمام وابستگی‌های مورد نیاز به‌درستی نصب شده‌اند و به‌طور کامل در محیط توسعه خود تست کنید. اگر با مشکلی مواجه شدید، لطفاً به مستندات رسمی مراجعه کنید یا برای دریافت کمک با تیم پشتیبانی تماس بگیرید.

تنظیمات پیشرفته تولید PDF: گزینه‌ها و پیکربندی

فراتر از جریان کار پایه، Aspose.PDF چندین ویژگی برای تنظیم دقیق خروجی ارائه می‌دهد.

سطح فشرده‌سازی تصویر

کنترل تعادل بین کیفیت و حجم فایل.

pdf_image.compression = ap.ImageCompression.JPEG
pdf_image.jpeg_quality = 70   # Lower value = smaller file, lower quality

اندازه صفحه و حاشیه‌ها

اگر به یک چیدمان یکنواخت نیاز دارید، اندازه صفحه سفارشی تنظیم کنید.

page.page_info.width = 595   # A4 width in points
page.page_info.height = 842  # A4 height in points
page.page_info.margin = ap.MarginInfo(10, 10, 10, 10)

رزولوشن (DPI)

DPI بالاتر تصاویر واضح‌تری تولید می‌کند، اما هزینه آن PDFهای بزرگتر است.

pdf_doc.page_info.dpi = 300

برای دریافت فهرست کامل ویژگی‌های قابل تنظیم، به مرجع API مراجعه کنید.

نتیجه‌گیری

شما اکنون یک راه‌حل کامل برنامه‌نویسی برای تولید PDF از تصاویر در پایتون دارید که با استفاده از Aspose.PDF for Python via .NET انجام می‌شود. SDK بارگذاری تصویر، ایجاد صفحه، فشرده‌سازی و ذخیره‌سازی را تنها با چند خط کد مدیریت می‌کند و به شما اجازه می‌دهد تا بر منطق کسب‌وکار تمرکز کنید نه روی پردازش سطح پایین PDF. وقتی به مرحله تولید می‌روید، به‌خاطر داشته باشید که باید یک لایسنس مناسب تهیه کنید؛ جزئیات در صفحه قیمت‌گذاری موجود است و می‌توانید برای ارزیابی با یک لایسنس موقت شروع کنید. برنامه‌نویسی خوش بگذرد و از سادگی تبدیل مجموعه‌های تصویر به PDF‌های صیقلی لذت ببرید!

FAQs

  • چگونه می‌توانم PDF را از تصاویر در Python با استفاده از Aspose.PDF تولید کنم؟
    از Aspose.PDF SDK برای ایجاد یک Document استفاده کنید، برای هر تصویری که با Pillow بارگذاری شده یک صفحه اضافه کنید، در صورت نیاز فشرده‌سازی را تنظیم کنید و با فراخوانی save() PDF را ذخیره کنید. مثال کامل در بالا گنجانده شده است.

  • چه فرمت‌های تصویری برای تولید PDF پشتیبانی می‌شوند؟
    SDK فرمت‌های PNG، JPG، JPEG، BMP، GIF، و TIFF را به‌صورت مستقیم می‌پذیرد. Pillow همچنین می‌تواند فرمت‌های پشتیبانی‌نشده را به یکی از این‌ها تبدیل کند پیش از افزودن به PDF.

  • آیا برای استفاده تجاری به مجوز نیاز دارم؟
    بله. یک مجوز ارزیابی موقت دریافت کنید از صفحه مجوز موقت و یک مجوز کامل خریداری کنید از طریق صفحه قیمت‌گذاری برای استقرارهای تولیدی.

  • آیا می‌توانم اندازه صفحه PDF و وضوح را تنظیم کنم؟
    به‌طور قطع. از page.page_info.width، page.page_info.height و pdf_doc.page_info.dpi برای کنترل ابعاد و DPI استفاده کنید، همان‌طور که در بخش Configuration / Options نشان داده شده است.

Read More