استخدم FloatingBox لتخطيط PDF في بايثون

الاستخدام الأساسي للصندوق العائم

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

استخدم هذه الصفحة عندما تحتاج إلى حاويات نصية منظمة وتخطيطات متعددة الأعمدة وتحديد المواقع بدقة في مستندات PDF باستخدام Aspose.PDF لـ Python عبر .NET.

  1. قم بإنشاء ملف جديد Document.
  2. إضافة Page إلى المستند.
  3. قم بإنشاء FloatingBox.
  4. قم بتعيين حدود الصندوق باستخدام BorderInfo و BorderSide.
  5. تكرار مربع التحكم مع is_need_repeating الملكية.
  6. إضافة محتوى نصي باستخدام TextFragment.
  7. أضف FloatingBox إلى Page.
  8. احفظ مستند PDF النهائي باستخدام Document.save().
import aspose.pdf as ap

def create_and_add_floating_box(outfile):
    # Create PDF document
    with ap.Document() as document:
        # Add page to pages collection of PDF
        page = document.pages.add()
        # Create and fill box
        box = ap.FloatingBox(400, 30)
        box.border = ap.BorderInfo(ap.BorderSide.ALL, 1.5, ap.Color.dark_green)
        box.is_need_repeating = False
        phrase = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quam odio, sollicitudin ac mauris vel, suscipit pellentesque nisi."
        box.paragraphs.add(ap.text.TextFragment(phrase))
        # Add box
        page.paragraphs.add(box)
        document.save(outfile)

في المثال أعلاه، FloatingBox تم إنشاؤه بعرض 400 نقطة وارتفاع 30 نقطة. يتجاوز النص الارتفاع المتاح عن قصد، لذلك يتم قص جزء منه.

صورة 1

ال is_need_repeating عقار بقيمة False يحد من عرض النص إلى صفحة واحدة.

إذا قمت بتعيين هذه الخاصية إلى True، يعاد تدفق النص إلى الصفحات اللاحقة في نفس الموضع.

الصورة 2

ميزات الصندوق العائم المتقدمة

دعم متعدد الأعمدة

تخطيط متعدد الأعمدة (حالة بسيطة)

FloatingBox يدعم تخطيط متعدد الأعمدة. لإنشاء مثل هذا التخطيط، يجب تحديد قيم ColumnInfo خصائص.

  • column_widths هي سلسلة تحدد عرض كل عمود بالنقاط.
  • column_spacing هي سلسلة تحدد عرض الفجوة بين الأعمدة.
  • column_count هو عدد الأعمدة.
import sys
import aspose.pdf as ap
from os import path

def multi_column_layout(outfile):
    # Create PDF document
    with ap.Document() as document:
        # Add page to pages collection of PDF
        page = document.pages.add()
        # Set margin settings
        page.page_info.margin = ap.MarginInfo(36, 18, 36, 18)
        column_count = 3
        spacing = 10
        width = (
            page.page_info.width
            - page.page_info.margin.left
            - page.page_info.margin.right
            - (column_count - 1) * spacing
        )
        column_width = width / 3
        # Create FloatingBox
        box = ap.FloatingBox()
        box.is_need_repeating = True
        box.column_info.column_widths = f"{column_width} {column_width} {column_width}"
        box.column_info.column_spacing = f"{spacing}"
        box.column_info.column_count = 3
        phrase = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quam odio, sollicitudin ac mauris vel, suscipit pellentesque nisi."
        paragraphs = [
            phrase,
            phrase,
            phrase,
            phrase,
            phrase,
            phrase,
            phrase,
            phrase,
            phrase,
            phrase,
        ]
        for paragraph in paragraphs:
            box.paragraphs.add(ap.text.TextFragment(paragraph))
        # Add a box to a page
        page.paragraphs.add(box)
        # Save PDF document
        document.save(outfile)

يقوم المثال بإنشاء عينة من الفقرات ووضعها عبر ثلاثة أعمدة. يستمر المحتوى في الصفحات الإضافية حتى يتم عرض جميع الفقرات.

تخطيط متعدد الأعمدة مع بدء العمود القسري

يستخدم هذا المثال نفس الإعداد متعدد الأعمدة، ولكنه يفرض على كل فقرة مضافة أن تبدأ في عمود جديد. للقيام بذلك، قم بتعيين is_first_paragraph_in_column = True على كل TextFragment قبل إضافته إلى FloatingBox.

import sys
import aspose.pdf as ap
from os import path

def multi_column_layout_2(outfile):
    # Create PDF document
    with ap.Document() as document:
        # Add page to pages collection of PDF
        page = document.pages.add()
        # Set margin settings
        page.page_info.margin = ap.MarginInfo(36, 18, 36, 18)
        column_count = 3
        spacing = 10
        width = (
            page.page_info.width
            - page.page_info.margin.left
            - page.page_info.margin.right
            - (column_count - 1) * spacing
        )
        column_width = width / 3
        # Create FloatingBox
        box = ap.FloatingBox()
        box.is_need_repeating = True
        box.column_info.column_widths = f"{column_width} {column_width} {column_width}"
        box.column_info.column_spacing = f"{spacing}"
        box.column_info.column_count = 3
        phrase = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quam odio, sollicitudin ac mauris vel, suscipit pellentesque nisi."
        paragraphs = [
            phrase,
            phrase,
            phrase,
            phrase,
            phrase,
            phrase,
            phrase,
            phrase,
            phrase,
            phrase,
        ]
        for paragraph in paragraphs:
            text = ap.text.TextFragment(paragraph)
            text.is_first_paragraph_in_column = True
            box.paragraphs.add(text)
        # Add a box to a page
        page.paragraphs.add(box)
        # Save PDF document
        document.save(outfile)

دعم الخلفية

قم بتطبيق لون الخلفية على FloatingBox في وثيقة PDF باستخدام Aspose.PDF لبيثون عبر.NET. من خلال تعيين Color إلى background_color، يمكنك تمييز المحتوى الخاص بالعناوين أو وسائل الشرح أو الأقسام ذات الأنماط.

يوضح مقتطف الشفرة هذا كيفية إنشاء مربع نص بسيط باللون الأخضر الفاتح مع نموذج للمحتوى.

import sys
import aspose.pdf as ap
from os import path

def background_support(outfile):
    # Create PDF document
    with ap.Document() as document:
        # Add page to pages collection of PDF
        page = document.pages.add()
        # Create and fill box
        box = ap.FloatingBox(400, 30)
        box.background_color = ap.Color.light_green
        box.is_need_repeating = False
        box.paragraphs.add(ap.text.TextFragment("text example"))
        # Add box
        page.paragraphs.add(box)
        # Save PDF document
        document.save(outfile)

دعم تحديد المواقع

موقف أ FloatingBox على الصفحة يتم التحكم فيها بواسطة positioning_mode, left، و top. عندما positioning_mode هو:

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

تم إصلاح الموقع بواسطة left و top؛ لا يعتمد على العناصر السابقة ولا يؤثر على تدفق العناصر اللاحقة.

import sys
import aspose.pdf as ap
from os import path

def offset_support(outfile):
    # Create PDF document
    with ap.Document() as document:
        # Add page to pages collection of PDF
        page = document.pages.add()
        # Create and fill box
        box = ap.FloatingBox(400, 30)
        box.top = 45
        box.left = 15
        box.positioning_mode = ap.ParagraphPositioningMode.ABSOLUTE
        box.border = ap.BorderInfo(ap.BorderSide.ALL, 1.5, ap.Color.dark_green)
        box.paragraphs.add(ap.text.TextFragment("text example 1"))
        page.paragraphs.add(ap.text.TextFragment("text example 2"))
        # Add the box to the page
        page.paragraphs.add(box)
        page.paragraphs.add(ap.text.TextFragment("text example 3"))
        document.save(outfile)

قم بمحاذاة المربعات العائمة مع المحاذاة الرأسية والأفقية في PDF

محاذاة FloatingBox عناصر على صفحة PDF باستخدام VerticalAlignment و HorizontalAlignment في Aspose.PDF لبيثون عبر.NET. يساعدك هذا في وضع الحاويات العائمة في المواضع العلوية أو الوسطى أو السفلية لتخطيطات الصفحات أو كتل الرأس/التذييل أو الملاحظات الجانبية.

  1. قم بإنشاء مستند PDF جديد.
  2. أضف صفحة إلى المستند.
  3. أضف الأول FloatingBox مع المحاذاة السفلية اليمنى.
  4. أضف الثانية FloatingBox مع محاذاة وسط اليمين.
  5. أضف الثالث FloatingBox مع المحاذاة العلوية اليمنى.
  6. احفظ المستند.
import sys
import aspose.pdf as ap
from os import path

def align_text_to_float(outfile):
    # Create PDF document
    with ap.Document() as document:
        # Add page to pages collection of PDF
        page = document.pages.add()

        # Create float box
        float_box = ap.FloatingBox(100, 100)
        # Set settings to float box
        float_box.vertical_alignment = ap.VerticalAlignment.BOTTOM
        float_box.horizontal_alignment = ap.HorizontalAlignment.RIGHT
        float_box.paragraphs.add(ap.text.TextFragment("FloatingBox_bottom"))
        float_box.border = ap.BorderInfo(ap.BorderSide.ALL, ap.Color.blue)
        # Add float box
        page.paragraphs.add(float_box)

        # Create float box
        float_box_2 = ap.FloatingBox(100, 100)
        # Set settings to float box
        float_box_2.vertical_alignment = ap.VerticalAlignment.CENTER
        float_box_2.horizontal_alignment = ap.HorizontalAlignment.RIGHT
        float_box_2.paragraphs.add(ap.text.TextFragment("FloatingBox_center"))
        float_box_2.border = ap.BorderInfo(ap.BorderSide.ALL, ap.Color.blue)
        # Add float box
        page.paragraphs.add(float_box_2)

        # Create float box
        float_box_3 = ap.FloatingBox(100, 100)
        # Set settings to float box
        float_box_3.vertical_alignment = ap.VerticalAlignment.TOP
        float_box_3.horizontal_alignment = ap.HorizontalAlignment.RIGHT
        float_box_3.paragraphs.add(ap.text.TextFragment("FloatingBox_top"))
        float_box_3.border = ap.BorderInfo(ap.BorderSide.ALL, ap.Color.blue)
        # Add float box
        page.paragraphs.add(float_box_3)

        # Save the document
        document.save(outfile)

موضوعات نصية ذات صلة