تحويل مجموعة من الصور المتناثرة إلى ملف PDF واحد قابل للبحث هو طلب شائع لأدوات التقارير، مولدات الفواتير، وأنظمة الأرشفة. Aspose.PDF for Python via .NET هي مجموعة تطوير برمجيات قوية تجعل هذا التحويل سريعًا وموثوقًا في تطبيقات Python. يوضح هذا الدليل كيفية تثبيت مجموعة التطوير، تحميل الصور باستخدام مكتبة Python Imaging Library، بناء ملف PDF صفحةً بصفحة، تعديل إعدادات الضغط، وأخيرًا حفظ النتيجة، كل ذلك مع أمثلة شفرة واضحة.

قبل البدء: المتطلبات المسبقة والتثبيت

لمتابعة هذا البرنامج التعليمي تحتاج إلى:

  • Python 3.8 أو أحدث مثبت على جهاز التطوير الخاص بك.
  • بيئة تطوير متكاملة أو محرر حسب اختيارك (VS Code, PyCharm, إلخ).
  • الوصول إلى الإنترنت لتنزيل حزمة SDK.

قم بتثبيت Aspose.PDF SDK ومكتبة Pillow (مكتبة Python Imaging Library الفعلية) باستخدام pip:

pip install aspose-pdf pillow

يمكنك أيضًا تنزيل SDK يدويًا من صفحة الإصدار الرسمية: Aspose.PDF for Python via .NET Download. بعد التثبيت، استورد المساحات الاسمية المطلوبة في البرنامج النصي الخاص بك.

الآن بعد أن تم إعداد البيئة، دعنا نغوص في التنفيذ.

إنشاء ملف PDF من الصور في بايثون: دليل خطوة بخطوة

الخطوة 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]

الخطوة 2: إنشاء مستند PDF جديد

إنشاء كائن Aspose.PDF Document الذي سيحتوي على الصفحات.

import aspose.pdf as ap

pdf_doc = ap.Document()

لمزيد من التفاصيل حول الفئة Document، راجع مرجع API.

الخطوة 3: إضافة كل صورة كصفحة منفصلة

تجول عبر الصور المحملة، أنشئ صفحة، وأدمج الصورة. يقوم 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 من الصور في بايثون.

إنشاء PDF من مجموعة صور في Python - مثال كامل للكود

البرنامج النصي التالي يجمع جميع الأجزاء معًا في برنامج واحد قابل للتنفيذ.

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 من الصور في Python باستخدام Aspose.PDF for Python via .NET. يتعامل SDK مع تحميل الصور، وإنشاء الصفحات، والضغط، والحفظ ببضع أسطر من الشيفرة فقط، مما يتيح لك التركيز على منطق الأعمال بدلاً من معالجة PDF منخفضة المستوى. عند الانتقال إلى الإنتاج، تذكر الحصول على ترخيص مناسب؛ التفاصيل متاحة على صفحة التسعير ويمكنك البدء بـترخيص مؤقت للتقييم. برمجة سعيدة، واستمتع ببساطة تحويل مجموعات الصور إلى ملفات PDF مصقولة!

الأسئلة المتكررة

  • كيف يمكنني إنشاء 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، كما هو موضح في قسم التكوين / الخيارات.

اقرأ المزيد