الحصول على حدود الفقرات من العروض التقديمية في بايثون
نظرة عامة
تشرح هذه المقالة كيفية الحصول على حدود الفقرات وحجمها وإحداثياتها في Aspose.Slides. توضح كيفية استرجاع مستطيل الفقرة من TextFrame باستخدام Paragraph.get_rect، وكيفية الحصول على إحداثيات الفقرة داخل إطار نص خلية جدول، وتبرز تفاصيل هامة مثل وحدات القياس، تأثير تغليف النص على الحدود، تحويل البكسل، وقيم تنسيق الفقرة الفعّالة.
الحصول على إحداثيات مستطيلة للفقرة
استخدم Paragraph.get_rect للحصول على المستطيل الحدودي لفقرة.
import aspose.slides as slides
with slides.Presentation("Shapes.pptx") as presentation:
slide = presentation.slides[0]
shape = slide.shapes[0]
paragraph = shape.text_frame.paragraphs[0]
rectangle = paragraph.get_rect()
الحصول على حجم الفقرة داخل TextFrame لخلية جدول
للحصول على حجم وإحداثيات Paragraph داخل إطار نص خلية جدول، استخدم Paragraph.get_rect. المستطيل المعاد يكون نسبياً إلى إطار نص خلية الجدول، لذا أضف موضع الجدول وإزاحة الخلية عندما تحتاج إلى إحداثيات على مستوى الشريحة.
المثال التالي يحصل على حدود الفقرة داخل خلية جدول ويرسم مستطيلات على الشريحة لتصوير تلك الحدود:
import aspose.slides as slides
import aspose.pydrawing as draw
with slides.Presentation("source.pptx") as presentation:
slide = presentation.slides[0]
table = slide.shapes[0]
cell = table.rows[1][1]
cell_x = table.x + cell.offset_x
cell_y = table.y + cell.offset_y
for paragraph in cell.text_frame.paragraphs:
if paragraph.text == "":
continue
paragraph_rectangle = paragraph.get_rect()
paragraph_rectangle_x = paragraph_rectangle.x + cell_x
paragraph_rectangle_y = paragraph_rectangle.y + cell_y
paragraph_bounds_shape = slide.shapes.add_auto_shape(
slides.ShapeType.RECTANGLE,
paragraph_rectangle_x,
paragraph_rectangle_y,
paragraph_rectangle.width,
paragraph_rectangle.height)
paragraph_bounds_shape.fill_format.fill_type = slides.FillType.NO_FILL
paragraph_bounds_shape.line_format.fill_format.solid_fill_color.color = draw.Color.yellow
paragraph_bounds_shape.line_format.fill_format.fill_type = slides.FillType.SOLID
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
الأسئلة الشائعة
بأي وحدات يتم قياس إحداثيات الفقرة؟
يتم قياسها بالنقاط، حيث أن البوصة الواحدة تعادل 72 نقطة. ينطبق ذلك على جميع الإحداثيات والأبعاد على الشريحة.
هل يؤثر تغليف الكلمات على حدود الفقرة؟
نعم. إذا تم تمكين TextFrameFormat.wrap_text لإطار النص TextFrame، يتم كسر النص ليتناسب مع عرض المنطقة، مما يغيّر الحدود الفعلية للفقرة.
هل يمكن ربط إحداثيات الفقرة بشكل موثوق بالبكسل في الصورة المصدرة؟
نعم. قم بتحويل النقاط إلى بكسل باستخدام الصيغة التالية: البكسل = النقاط × (DPI ÷ 72). النتيجة تعتمد على DPI المختار للتصوير أو التصدير.
كيف أحصل على معلمات تنسيق الفقرة “الفعّالة” مع مراعاة وراثة الأنماط؟
استخدم effective paragraph formatting data structure; تُرجع القيم النهائية المجمّعة للمسافات البادئة، الفواصل، التغليف، الاتجاه من اليمين إلى اليسار، والمزيد.