Python में PowerPoint में Shapes कैसे जोड़ें

Python में PowerPoint में Shapes कैसे जोड़ें

Aspose.Slides FOSS for Python प्रस्तुति स्लाइड्स में AutoShapes, Tables, Connectors, और PictureFrames जोड़ने का समर्थन करता है। सभी shape प्रकार slide.shapes संग्रह के माध्यम से जोड़े जाते हैं।

चरण-दर-चरण मार्गदर्शिका

चरण 1: पैकेज स्थापित करें

pip install aspose-slides-foss

स्थापना की पुष्टि करें:

import aspose.slides_foss as slides
print("Ready")

चरण 2: प्रस्तुति बनाएं

हमेशा Presentation को एक कॉन्टेक्स्ट मैनेजर के रूप में उपयोग करें।

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    # ... add shapes ...
    prs.save("output.pptx", SaveFormat.PPTX)

चरण 3: एक AutoShape जोड़ें

slide.shapes.add_auto_shape(shape_type, x, y, width, height) दिए गए स्थिति और आकार (सभी पॉइंट्स में) पर एक आकार रखता है। ShapeType स्थिरांक का उपयोग करके आकार का चयन करें।

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    # Rectangle
    rect = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 100)
    rect.add_text_frame("Rectangle shape")

    # Ellipse
    ellipse = slide.shapes.add_auto_shape(ShapeType.ELLIPSE, 400, 50, 200, 100)
    ellipse.add_text_frame("Ellipse shape")

    prs.save("autoshapes.pptx", SaveFormat.PPTX)

चरण 4: तालिका जोड़ें

slide.shapes.add_table(x, y, col_widths, row_heights) निर्दिष्ट स्थिति पर एक तालिका बनाता है। कॉलम चौड़ाइयाँ और पंक्ति ऊँचाइयाँ बिंदु मानों की सूचियाँ हैं।

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    col_widths = [150.0, 150.0, 150.0]
    row_heights = [40.0, 40.0, 40.0]
    table = slide.shapes.add_table(50, 200, col_widths, row_heights)

    # Set header row text
    headers = ["Product", "Units", "Revenue"]
    for col, text in enumerate(headers):
        table.rows[0][col].text_frame.text = text

    # Set data rows
    rows = [
        ["Widget A", "120", "$2,400"],
        ["Widget B", "85", "$1,700"],
    ]
    for row_idx, row_data in enumerate(rows):
        for col, text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = text

    prs.save("table.pptx", SaveFormat.PPTX)

चरण 5: कनेक्टर जोड़ें

कनेक्टर दो आकारों को दृश्य रूप से जोड़ते हैं। पहले आकार बनाएं, फिर एक कनेक्टर जोड़ें और उसके प्रारंभ और अंत कनेक्शन बिंदु सेट करें।

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    box1 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 100, 150, 60)
    box1.add_text_frame("Start")

    box2 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 350, 100, 150, 60)
    box2.add_text_frame("End")

    conn = slide.shapes.add_connector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10)
    conn.start_shape_connected_to = box1
    conn.start_shape_connection_site_index = 3  # right side of box1
    conn.end_shape_connected_to = box2
    conn.end_shape_connection_site_index = 1    # left side of box2

    prs.save("connector.pptx", SaveFormat.PPTX)

एक आयत के लिए कनेक्शन साइट सूचकांक 0–3 तक क्रमांकित होते हैं: शीर्ष=0, बायाँ=1, नीचे=2, दायाँ=3.


चरण 6: एक चित्र फ्रेम जोड़ें

एक छवि को एम्बेड करें और उसे स्लाइड में PictureFrame के रूप में जोड़ें। पहले छवि बाइट्स को पढ़ें, उन्हें प्रस्तुति की इमेज कलेक्शन में जोड़ें, फिर फ्रेम बनाएं।

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    with open("logo.png", "rb") as f:
        image_data = f.read()

    image = prs.images.add_image(image_data)

    slide = prs.slides[0]
    slide.shapes.add_picture_frame(
        ShapeType.RECTANGLE,  # bounding shape type
        50, 50,               # x, y in points
        200, 150,             # width, height in points
        image
    )

    prs.save("with-image.pptx", SaveFormat.PPTX)

सामान्य समस्याएँ और समाधान

आकार दृश्यमान स्लाइड क्षेत्र के बाहर दिखाई देता है

स्लाइड्स डिफ़ॉल्ट रूप से 720 × 540 पॉइंट्स होती हैं। x या y के मान यदि इन सीमाओं से बाहर हों तो आकार स्लाइड के बाहर हो जाता है। x < 720 और y < 540 रखें, और x + width <= 720 और y + height <= 540 सुनिश्चित करें।

AttributeError: 'NoneType' object has no attribute 'text_frame'

add_auto_shape() सीधे shape ऑब्जेक्ट को लौटाता है। यदि आप None देखते हैं, तो जांचें कि आप रिटर्न वैल्यू को त्याग नहीं रहे हैं।

टेबल सेल टेक्स्ट असाइनमेंट के बाद खाली है

सही प्रॉपर्टी है .text_frame.text (न कि .text सीधे सेल पर)। सेल्स तक पहुँचें जैसे table.rows[row_index][col_index].text_frame.text = "value"


अक्सर पूछे जाने वाले प्रश्न

मैं एक स्लाइड में कितनी आकृतियाँ जोड़ सकता हूँ?

कोई लाइब्रेरी‑निर्धारित सीमा नहीं है। व्यावहारिक सीमाएँ फ़ाइल आकार और आपके लक्ष्य PPTX व्यूअर की रेंडरिंग क्षमता पर निर्भर करती हैं।

क्या मैं इसे जोड़ने के बाद किसी आकार की स्थिति बदल सकता हूँ?

हाँ। add_auto_shape() द्वारा लौटाए गए shape ऑब्जेक्ट में x, y, width, और height प्रॉपर्टीज़ हैं जिन्हें आप सेट कर सकते हैं:

shape.x = 100
shape.y = 200
shape.width = 400
shape.height = 80

क्या मैं आकार की रूपरेखा (बॉर्डर) का रंग सेट कर सकता हूँ?

हाँ, shape.line_format के माध्यम से:

from aspose.slides_foss.drawing import Color
shape.line_format.fill_format.solid_fill_color.color = Color.from_argb(255, 200, 0, 0)

क्या चार्ट समर्थित हैं?

नहीं। चार्ट, स्मार्टआर्ट, और OLE ऑब्जेक्ट्स इस संस्करण में लागू नहीं हैं और NotImplementedError उत्पन्न करते हैं।


संबंधित देखें

 हिन्दी