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

ما هو كتيب PDF؟

كتيب PDF هو مستند مُنظم بحيث يمكن طباعة عدة صفحات، طيها، وقراءتها ككتاب صغير أو دليل أو كتيب أو كتالوج. بدلاً من الحفاظ على الصفحات بترتيبها التسلسلي العادي، تقوم عملية إنشاء الكتيب بإعادة ترتيب الصفحات بحيث تظهر الصفحات الصحيحة جنبًا إلى جنب بعد الطباعة والطي.

على سبيل المثال، قد يضع تخطيط الكتيب صفحة واحدة على الجانب الأيسر من الورقة وصفحة أخرى على الجانب الأيمن. عند الطباعة على الوجهين وطويها، تظهر الصفحات بترتيب القراءة الصحيح.

عادةً ما تُستخدم الكتيبات لـ:

  • كتالوجات المنتجات
  • برامج الفعاليات
  • كتيبات التدريب
  • تقارير
  • أدلة الإرشاد
  • ملفات تعريف الشركة
  • كتيبات دعائية
  • كتب مطبوعة صغيرة

في بايثون، يمكنك أتمتة هذه العملية بدلاً من إعادة ترتيب الصفحات يدويًا في محرر PDF.

واجهة برمجة تطبيقات مولد كتيب PDF بلغة Python

لإنشاء كتيب PDF في Python، سنستخدم Aspose.PDF for Python via .NET. إنها واجهة برمجة تطبيقات معالجة PDF تسمح لمطوري Python بإنشاء وتحرير وتحويل وتقسيم ودمج وتأمين وتعليق وتعديل ملفات PDF برمجيًا.

لإنشاء الكتيب، الفئة الأساسية هي:

pdf.facades.PdfFileEditor()

توفر فئة PdfFileEditor ميزات معالجة ملفات PDF عالية المستوى. في هذا البرنامج التعليمي، سنستخدم طريقة make_booklet() لتحويل ملف PDF موجود إلى تنسيق كتيب.

الخطوة 1: تثبيت Aspose.PDF SDK

أولاً، قم بتثبيت Aspose.PDF for Python via .NET باستخدام pip:

pip install aspose-pdf

الخطوة 2: إعداد ملف PDF الإدخال

قبل إنشاء كتيب، تأكد من أن لديك ملف PDF مصدر بالفعل. في هذا البرنامج التعليمي، سنستخدم اسم الملف التالي:

input.pdf

سيتم حفظ كتيب الإخراج باسم:

booklet.pdf

ضع ملف PDF الإدخال في نفس الدليل الذي يحتوي على برنامج Python الخاص بك، أو قدم المسار الكامل للملف.

Example:

project-folder/
├── input.pdf
└── create_booklet.py

الخطوة 3: إنشاء كتيب PDF بسيط باستخدام Python

أسهل طريقة لإنشاء كتيب هي استدعاء make_booklet() مع ملف الإدخال، ملف الإخراج، وحجم الصفحة المستهدف.

الكود التالي بلغة Python ينشئ كتيبًا باستخدام حجم الصفحة A5:

import aspose.pdf as pdf

# Create PdfFileEditor object
pdf_editor = pdf.facades.PdfFileEditor()

# Create booklet from input PDF
pdf_editor.make_booklet(
    "input.pdf",
    "booklet.pdf",
    pdf.PageSize.a5
)

print("PDF booklet created successfully.")

يقوم هذا الكود بتحميل input.pdf، ويُرتب صفحاته في تخطيط كتيب، ويحفظ النتيجة كـ booklet.pdf.

الخطوة 4: إنشاء كتيب PDF مخصص بالصفحات اليسرى واليمنى

في كثير من الحالات، قد ترغب في التحكم في الصفحات التي تظهر على الجانب الأيسر وتلك التي تظهر على الجانب الأيمن من تخطيط الكتيب.

المثال التالي مستند إلى كود C# الأصلي ويحوّله إلى Python:

import aspose.pdf as pdf

# Create PdfFileEditor object
pdf_editor = pdf.facades.PdfFileEditor()

# Set left and right pages
left_pages = [1, 5]
right_pages = [2, 3]

# Make booklet
pdf_editor.make_booklet(
    "input.pdf",
    "booklet.pdf",
    pdf.PageSize.a5,
    left_pages,
    right_pages
)

print("PDF booklet created successfully.")

شرح الكود

دعونا نفصل الكود.

أولاً، استورد حزمة Aspose.PDF:

import aspose.pdf as pdf

ثم قم بإنشاء مثيل من PdfFileEditor:

pdf_editor = pdf.facades.PdfFileEditor()

يوفر هذا الكائن إمكانية الوصول إلى ميزات تحرير PDF عالية المستوى، بما في ذلك إنشاء الكتيب.

بعد ذلك، حدد ترتيب الصفحات:

left_pages = [1, 5]
right_pages = [2, 3]

قائمة left_pages تحدد الصفحات التي ستظهر على الجانب الأيسر من انتشار الكتيب. قائمة right_pages تحدد الصفحات التي ستظهر على الجانب الأيمن.

أخيرًا، استدعِ طريقة make_booklet():

pdf_editor.make_booklet(
    "input.pdf",
    "booklet.pdf",
    pdf.PageSize.a5,
    left_pages,
    right_pages
)

هذا ينشئ الكتيب ويحفظه كـ booklet.pdf.

الكود الكامل بلغة Python

فيما يلي مثال كامل على الشيفرة لإنشاء كتيب PDF باستخدام Python:

import aspose.pdf as pdf

def create_pdf_booklet(input_pdf: str, output_pdf: str) -> None:
    """
    Create a PDF booklet from an existing PDF file using Aspose.PDF for Python via .NET.

Args:
        input_pdf: Path to the source PDF file.
        output_pdf: Path where the generated booklet PDF will be saved.
    """

# Create PdfFileEditor object
    pdf_editor = pdf.facades.PdfFileEditor()

# Set left and right pages
    left_pages = [1, 5]
    right_pages = [2, 3]

# Make booklet
    pdf_editor.make_booklet(
        input_pdf,
        output_pdf,
        pdf.PageSize.a5,
        left_pages,
        right_pages
    )

if __name__ == "__main__":
    create_pdf_booklet(
        input_pdf="input.pdf",
        output_pdf="booklet.pdf"
    )

print("PDF booklet created successfully.")

الخطوة 5: إضافة إشارات مرجعية اختيارية إلى الكتيب

بعد إنشاء الكتيب، قد ترغب في إضافة إشارات مرجعية لتسهيل التنقل. الإشارات المرجعية مفيدة للتقارير، الأدلة، الكتالوجات، أدلة التدريب، وغيرها من المستندات الطويلة.

المثال التالي أولاً ينشئ كتيّبًا ثم يضيف إشارات مرجعية إلى ملف PDF المُولَّد:

import aspose.pdf as pdf

def create_pdf_booklet(input_pdf: str, output_pdf: str) -> None:
    """
    Create a PDF booklet from an existing PDF file.
    """

pdf_editor = pdf.facades.PdfFileEditor()

left_pages = [1, 5]
    right_pages = [2, 3]

pdf_editor.make_booklet(
        input_pdf,
        output_pdf,
        pdf.PageSize.a5,
        left_pages,
        right_pages
    )

def add_bookmarks(input_pdf: str, output_pdf: str) -> None:
    """
    Add bookmarks to an existing PDF document.
    """

# Open generated booklet PDF
    document = pdf.Document(input_pdf)

# Add bookmark for first page
    first_bookmark = pdf.OutlineItemCollection(document.outlines)
    first_bookmark.title = "Booklet Start"
    first_bookmark.bold = True
    first_bookmark.action = pdf.annotations.GoToAction(document.pages[1])
    document.outlines.append(first_bookmark)

# Add bookmark for second page, if available
    if len(document.pages) >= 2:
        second_bookmark = pdf.OutlineItemCollection(document.outlines)
        second_bookmark.title = "Second Spread"
        second_bookmark.action = pdf.annotations.GoToAction(document.pages[2])
        document.outlines.append(second_bookmark)

# Save PDF with bookmarks
    document.save(output_pdf)

if __name__ == "__main__":
    create_pdf_booklet(
        input_pdf="input.pdf",
        output_pdf="booklet.pdf"
    )

add_bookmarks(
        input_pdf="booklet.pdf",
        output_pdf="booklet-with-bookmarks.pdf"
    )

print("PDF booklet with bookmarks created successfully.")

يقوم هذا الكود بإنشاء ملفين إخراج:

booklet.pdf
booklet-with-bookmarks.pdf

الملف الأول يحتوي على تخطيط الكتيب. الملف الثاني يحتوي على الكتيب مع العلامات المرجعية المضافة.

اختيار حجم الصفحة المناسب

في الأمثلة أعلاه، استخدمنا حجم الصفحة A5:

pdf.PageSize.a5

يُستخدم A5 عادةً للمنشورات الصغيرة لأنه مدمج ومناسب للكتيبات المطبوعة والكتيبات الدعائية والكتالوجات الصغيرة.

يمكنك استخدام أحجام صفحات أخرى حسب متطلبات الإخراج الخاصة بك. على سبيل المثال، إذا كنت تقوم بإنشاء كتيب أكبر، قد تستخدم A4. إذا كنت تحضّر دليلًا مدمجًا، قد يكون A5 أكثر ملاءمة.

تشمل حالات الاستخدام الشائعة للكتيب:

حالة الاستخدامحجم الصفحة المقترح
دليل صغيرA5
كتالوج المنتجA5 أو A4
برنامج الحدثA5
نشرة التدريبA4 أو A5
كتيب الشركةA5

أفضل الممارسات لإنشاء كتيبات PDF

عند إنشاء الكتيبات برمجيًا، احرص على مراعاة النقاط التالية.

1. استخدم ملف PDF مصدر نظيف

يجب أن يكون ملف PDF المدخل مُنسقًا بشكل صحيح بالفعل. تقوم عملية إنشاء الكتيب بإعادة ترتيب الصفحات، لكنها لا تعيد كتابة المحتوى الداخلي لكل صفحة.

قبل إنشاء الكتيب، تحقق من:

  • هوامش الصفحة
  • وضع الرأس والتذييل
  • تضمين الخط
  • جودة الصورة
  • اتجاه الصفحة
  • الهوامش الزائدة أو مناطق الطباعة الآمنة

2. التحقق من عدد الصفحات

تعمل الكتيبات بأفضل شكل عندما يكون عدد الصفحات مناسبًا للطي والطباعة. إذا لم يتطابق عدد الصفحات بشكل مثالي، قد تحتاج إلى إضافة صفحات فارغة.

على سبيل المثال، قد يتطلب الكتيب عدد صفحات يكون مضاعفًا للرقم أربعة لأن كل ورقة مطوية تنتج أربعة جوانب للصفحة.

3. اختبار الطباعة قبل الطباعة الجماعية

قم دائمًا بطباعة نسخة اختبار قبل إرسال الكتيب للطباعة الضخمة. يمكن لعروض PDF وإعدادات الطابعة أن تؤثر على التحجيم والهوامش ووضعية الطباعة المزدوجة واتجاه الصفحة.

قد تشمل إعدادات الطابعة الموصى بها:

  • الطباعة على الوجهين
  • قلب على الحافة القصيرة أو الحافة الطويلة، حسب الطابعة
  • الحجم الفعلي
  • بدون تحجيم تلقائي
  • حجم الورق الصحيح

4. إضافة إشارات مرجعية للنسخ الرقمية

إذا كان الكتيب سيُشارك أيضًا رقميًا، فإن العلامات المرجعية تحسن التنقل. إنها تساعد القراء على القفز إلى الأقسام المهمة بسرعة.

الإشارات المرجعية مفيدة بشكل خاص لـ:

  • تقارير طويلة
  • كتيبات تقنية
  • وثائق السياسات
  • كتالوجات المنتجات
  • مواد التدريب

5. استخدم أسماء ملفات واضحة

استخدم أسماء وصفية لملفات الإخراج، خاصةً عند إنشاء المستندات في وضع الدُفعات.

على سبيل المثال:

employee-handbook-booklet.pdf
product-catalog-booklet.pdf
training-manual-booklet.pdf

الأخطاء الشائعة والحلول

خطأ: ModuleNotFoundError: No module named ‘aspose’

هذا يعني أن حزمة Aspose.PDF غير مثبتة في بيئة Python الحالية الخاصة بك.

pip install aspose-pdf

إذا كنت تستخدم بيئة افتراضية، تأكد من تفعيلها قبل تثبيت الحزمة.

خطأ: لم يتم العثور على ملف PDF الإدخال

إذا لم يتمكن البرنامج النصي الخاص بك من العثور على ملف الإدخال، فتحقق من مسار الملف.

بدلاً من:

"input.pdf"

استخدم مسارًا مطلقًا:

"C:/Users/YourName/Documents/input.pdf"

أو على Linux/macOS:

"/home/user/documents/input.pdf"

خطأ: إخراج الكتيب ليس بالترتيب المتوقع

إذا كنت تستخدم مصفوفات الصفحات اليسرى واليمنى المخصصة، فتأكد من أن أرقام الصفحات تتطابق مع الصفحات في ملف PDF المصدر.

Example:

left_pages = [1, 5]
right_pages = [2, 3]

يجب اختيار هذه القيم بناءً على ترتيب النشرة المطبوع الذي ترغب فيه.

خطأ: الإشارات المرجعية لا تظهر

إذا لم تظهر العلامات المرجعية في عارض PDF الخاص بك، تحقق مما إذا كان العارض قد فعل لوحة العلامات المرجعية. بعض عارضات PDF تخفي العلامات المرجعية بشكل افتراضي.

يمكنك أيضًا تعيين وضع صفحة المستند لعرض الخطوط العريضة:

document.page_mode = pdf.PageMode.USE_OUTLINES

أضف هذا قبل حفظ ملف PDF:

document.save(output_pdf)

إنشاء كتيب PDF في بايثون: الكود النهائي

الكود النهائي التالي ينشئ كتيب PDF، يضيف إشارات مرجعية، ويحفظ النتيجة:

import aspose.pdf as pdf

def create_pdf_booklet(input_pdf: str, booklet_pdf: str) -> None:
    """
    Create a custom PDF booklet using Aspose.PDF for Python via .NET.
    """

pdf_editor = pdf.facades.PdfFileEditor()

left_pages = [1, 5]
    right_pages = [2, 3]

pdf_editor.make_booklet(
        input_pdf,
        booklet_pdf,
        pdf.PageSize.a5,
        left_pages,
        right_pages
    )

def add_bookmarks_to_booklet(booklet_pdf: str, output_pdf: str) -> None:
    """
    Add bookmarks to the generated booklet PDF.
    """

document = pdf.Document(booklet_pdf)

start_bookmark = pdf.OutlineItemCollection(document.outlines)
    start_bookmark.title = "Booklet Start"
    start_bookmark.bold = True
    start_bookmark.action = pdf.annotations.GoToAction(document.pages[1])
    document.outlines.append(start_bookmark)

if len(document.pages) >= 2:
        second_bookmark = pdf.OutlineItemCollection(document.outlines)
        second_bookmark.title = "Second Spread"
        second_bookmark.action = pdf.annotations.GoToAction(document.pages[2])
        document.outlines.append(second_bookmark)

document.page_mode = pdf.PageMode.USE_OUTLINES
    document.save(output_pdf)

if __name__ == "__main__":
    input_pdf = "input.pdf"
    booklet_pdf = "booklet.pdf"
    final_pdf = "booklet-with-bookmarks.pdf"

create_pdf_booklet(input_pdf, booklet_pdf)
    add_bookmarks_to_booklet(booklet_pdf, final_pdf)

print("PDF booklet created successfully:", final_pdf)

الخاتمة

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

طريقة PdfFileEditor.make_booklet() مفيدة عندما تحتاج إلى أتمتة إنشاء الكتيبات للتقارير، الكتالوجات، الأدلة، الكتيبات الدعائية، والوثائق القابلة للطباعة. من خلال الجمع بين إنشاء الكتيب والإشارات المرجعية، يمكنك إنشاء ملفات PDF مناسبة لكل من الطباعة والتوزيع الرقمي.

اقرأ المزيد