PowerPoint szöveg bekezdések kezelése Pythonban
Áttekintés
Az Aspose.Slides for Python via .NET a szöveget szövegkeretek, bekezdések és szakaszok hierarchiájában ábrázolja:
- TextFrame a szövegtároló egy alakzatban, és hozzáférést biztosít a bekezdésgyűjteményéhez.
- Paragraph egy bekezdést jelöl egy szövegkeretben, és hozzáférést biztosít a szakaszaihoz és a bekezdés‑szintű formázáshoz.
- Portion egy szövegrészt jelöl egy bekezdésen belül. Minden szakasz saját szöveggel és karakter‑szintű formázással rendelkezhet.
Egy bekezdés tehát több szakasz használatával tartalmazhat különböző betűtípusú, színű, méretű és egyéb formázású szöveget.
Bekezdések létrehozása és formázása
Bekezdések létrehozása több szakaszzal
Az alábbi lépések egy szövegkeretet hoznak létre három bekezdéssel, mindegyik három szakaszt tartalmazva:
- Hozzon létre egy példányt a Presentation osztályból.
- Hozzáférés a megfelelő diára az indexén keresztül.
- Adjunk hozzá egy téglalap alakú AutoShape elemet a diára.
- Hozzáférés az alakzat TextFrame eleméhez.
- Használja az alapértelmezett bekezdést, és adjon hozzá még két Paragraph objektumot a szövegkerethez.
- Adjon elegendő Portion objektumot minden bekezdéshez, hogy három szakaszt tartalmazzon. Az alapértelmezett bekezdés már tartalmaz egy üres szakaszt.
- Állítsa be minden szakasz szövegét.
- Alkalmazzon karakter‑szintű formázást a Portion.portion_format segítségével.
- Mentse a módosított prezentációt.
Ez a Python‑példa megvalósítja a lépéseket:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 150, 300, 150)
text_frame = shape.text_frame
first_paragraph = text_frame.paragraphs[0]
first_paragraph.portions.add(slides.Portion())
first_paragraph.portions.add(slides.Portion())
second_paragraph = slides.Paragraph()
second_paragraph.portions.add(slides.Portion())
second_paragraph.portions.add(slides.Portion())
second_paragraph.portions.add(slides.Portion())
text_frame.paragraphs.add(second_paragraph)
third_paragraph = slides.Paragraph()
third_paragraph.portions.add(slides.Portion())
third_paragraph.portions.add(slides.Portion())
third_paragraph.portions.add(slides.Portion())
text_frame.paragraphs.add(third_paragraph)
for paragraph_index in range(text_frame.paragraphs.count):
paragraph = text_frame.paragraphs[paragraph_index]
for portion_index in range(paragraph.portions.count):
portion = paragraph.portions[portion_index]
portion.text = f"Portion {paragraph_index + 1}.{portion_index + 1}"
if portion_index == 0:
portion.portion_format.fill_format.fill_type = slides.FillType.SOLID
portion.portion_format.fill_format.solid_fill_color.color = draw.Color.red
portion.portion_format.font_bold = slides.NullableBool.TRUE
portion.portion_format.font_height = 15
elif portion_index == 1:
portion.portion_format.fill_format.fill_type = slides.FillType.SOLID
portion.portion_format.fill_format.solid_fill_color.color = draw.Color.blue
portion.portion_format.font_italic = slides.NullableBool.TRUE
portion.portion_format.font_height = 18
presentation.save("paragraphs_with_portions.pptx", slides.export.SaveFormat.PPTX)
Felsorolásos és számozott listák létrehozása
Felsorolás vagy számozott lista létrehozása
A pontok és a számozás segít a kapcsolódó elemek gyors áttekintésében. Az Aspose.Slides‑ben a lista beállításait a BulletFormat határozza meg.
- Hozzon létre egy példányt a Presentation osztályból.
- Hozzáférés a megfelelő diára az indexén keresztül.
- Adjunk hozzá egy AutoShape elemet a kiválasztott diához.
- Hozzáférés az alakzat TextFrame eleméhez.
- Távolítsa el az alapértelmezett bekezdést a szövegkeretből.
- Hozzon létre egy Paragraph elemet egy szimbólum‑ponthoz.
- Állítsa be a BulletFormat.type értékét BulletType.SYMBOL‑ra, és adja meg a pont karakterét.
- Állítsa be a bekezdés szövegét, behúzását, a pont színét és magasságát.
- Adja hozzá a bekezdést a szövegkerethez.
- Hozzon létre egy második bekezdést, és állítsa be a BulletFormat.type értékét BulletType.NUMBERED‑ra.
- Konfigurálja a számozott pont stílusát, majd adja hozzá a bekezdést a szövegkerethez.
- Mentse a prezentációt.
Ez a Python‑példa szimbólum‑pontot és számozott pontot hoz létre:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 200, 200, 400, 200)
text_frame = shape.text_frame
text_frame.paragraphs.clear()
symbol_paragraph = slides.Paragraph()
symbol_paragraph.text = "Welcome to Aspose.Slides"
symbol_paragraph.paragraph_format.bullet.type = slides.BulletType.SYMBOL
symbol_paragraph.paragraph_format.bullet.char = chr(0x2022)
symbol_paragraph.paragraph_format.indent = 25
symbol_paragraph.paragraph_format.bullet.color.color_type = slides.ColorType.RGB
symbol_paragraph.paragraph_format.bullet.color.color = draw.Color.black
symbol_paragraph.paragraph_format.bullet.is_bullet_hard_color = slides.NullableBool.TRUE
symbol_paragraph.paragraph_format.bullet.height = 100
text_frame.paragraphs.add(symbol_paragraph)
numbered_paragraph = slides.Paragraph()
numbered_paragraph.text = "This is a numbered item"
numbered_paragraph.paragraph_format.bullet.type = slides.BulletType.NUMBERED
numbered_paragraph.paragraph_format.bullet.numbered_bullet_style = slides.NumberedBulletStyle.BULLET_CIRCLE_NUM_WD_BLACK_PLAIN
numbered_paragraph.paragraph_format.indent = 25
numbered_paragraph.paragraph_format.bullet.color.color_type = slides.ColorType.RGB
numbered_paragraph.paragraph_format.bullet.color.color = draw.Color.black
numbered_paragraph.paragraph_format.bullet.is_bullet_hard_color = slides.NullableBool.TRUE
numbered_paragraph.paragraph_format.bullet.height = 100
text_frame.paragraphs.add(numbered_paragraph)
presentation.save("bulleted_and_numbered_list.pptx", slides.export.SaveFormat.PPTX)
Kép‑pontok használata
A kép‑pontok lehetővé teszik egy egyéni kép használatát a szimbólum vagy szám helyett.
- Hozzon létre egy példányt a Presentation osztályból.
- Hozzáférés a megfelelő diára az indexén keresztül.
- Adjunk hozzá egy AutoShape elemet, és férjünk hozzá a TextFrame eleméhez.
- Távolítsa el az alapértelmezett bekezdést a szövegkeretből.
- Töltse be a pontképet, és adja hozzá a prezentáció képgyűjteményéhez PPImage‑ként.
- Hozzon létre egy Paragraph elemet, és állítsa be a szövegét.
- Állítsa be a BulletFormat.type értékét BulletType.PICTURE‑ra.
- Rendelje hozzá a képet a BulletFormat.picture segítségével, és állítsa be a pont magasságát.
- Adja hozzá a bekezdést a szövegkerethez.
- Mentse a módosított prezentációt.
Ez a Python‑példa kép‑pontot hoz létre:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
with slides.Images.from_file("bullets.png") as bullet_image:
presentation_image = presentation.images.add_image(bullet_image)
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 200, 200, 400, 200)
text_frame = shape.text_frame
text_frame.paragraphs.clear()
paragraph = slides.Paragraph()
paragraph.text = "Welcome to Aspose.Slides"
paragraph.paragraph_format.bullet.type = slides.BulletType.PICTURE
paragraph.paragraph_format.bullet.picture.image = presentation_image
paragraph.paragraph_format.bullet.height = 100
text_frame.paragraphs.add(paragraph)
presentation.save("picture_bullet.pptx", slides.export.SaveFormat.PPTX)
presentation.save("picture_bullet.ppt", slides.export.SaveFormat.PPT)
Többszintű lista létrehozása
Állítsa be a ParagraphFormat.depth értékét, hogy a bekezdéseket a lista különböző szintjein helyezze el. A legfelső szint mélysége 0.
- Hozzon létre egy Presentation elemet, és nyisson meg egy diát.
- Adjunk hozzá egy AutoShape elemet, és törölje az alapértelmezett bekezdést a szövegkeretből.
- Hozzon létre négy bekezdést, és állítsa be a pontszimbólumaikat.
- Állítsa be a ParagraphFormat.depth értékét
0,1,2és3‑ra. - Adja hozzá a bekezdéseket a szövegkerethez, majd mentse a prezentációt.
Ez a Python‑példa négy szintű pontozott listát hoz létre:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 200, 200, 400, 200)
text_frame = shape.text_frame
text_frame.paragraphs.clear()
first_paragraph = slides.Paragraph()
first_paragraph.text = "Content"
first_paragraph.paragraph_format.bullet.type = slides.BulletType.SYMBOL
first_paragraph.paragraph_format.bullet.char = chr(0x2022)
first_paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
first_paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.black
first_paragraph.paragraph_format.depth = 0
second_paragraph = slides.Paragraph()
second_paragraph.text = "Second level"
second_paragraph.paragraph_format.bullet.type = slides.BulletType.SYMBOL
second_paragraph.paragraph_format.bullet.char = "-"
second_paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
second_paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.black
second_paragraph.paragraph_format.depth = 1
third_paragraph = slides.Paragraph()
third_paragraph.text = "Third level"
third_paragraph.paragraph_format.bullet.type = slides.BulletType.SYMBOL
third_paragraph.paragraph_format.bullet.char = chr(0x2022)
third_paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
third_paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.black
third_paragraph.paragraph_format.depth = 2
fourth_paragraph = slides.Paragraph()
fourth_paragraph.text = "Fourth level"
fourth_paragraph.paragraph_format.bullet.type = slides.BulletType.SYMBOL
fourth_paragraph.paragraph_format.bullet.char = "-"
fourth_paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
fourth_paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.black
fourth_paragraph.paragraph_format.depth = 3
text_frame.paragraphs.add(first_paragraph)
text_frame.paragraphs.add(second_paragraph)
text_frame.paragraphs.add(third_paragraph)
text_frame.paragraphs.add(fourth_paragraph)
presentation.save("multilevel_list.pptx", slides.export.SaveFormat.PPTX)
Számozott listaelemek egyedi kezdőértékkel
A BulletFormat.numbered_bullet_start_with beállítással meghatározható a számozott bekezdés kezdeti száma.
- Hozzon létre egy Presentation elemet, és adjunk hozzá egy AutoShape elemet egy diához.
- Törölje az alapértelmezett bekezdést az alakzat szövegkeretéből.
- Hozzon létre három számozott bekezdést.
- Állítsa be a BulletFormat.numbered_bullet_start_with értékét
2,3és7‑re a megfelelő bekezdésekhez. - Adja hozzá a bekezdéseket a szövegkerethez, majd mentse a prezentációt.
Ez a Python‑példa egyedi kezdőszámot rendel minden bekezdéshez:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 200, 200, 400, 200)
text_frame = shape.text_frame
text_frame.paragraphs.clear()
first_paragraph = slides.Paragraph()
first_paragraph.text = "Start at 2"
first_paragraph.paragraph_format.bullet.type = slides.BulletType.NUMBERED
first_paragraph.paragraph_format.bullet.numbered_bullet_start_with = 2
text_frame.paragraphs.add(first_paragraph)
second_paragraph = slides.Paragraph()
second_paragraph.text = "Start at 3"
second_paragraph.paragraph_format.bullet.type = slides.BulletType.NUMBERED
second_paragraph.paragraph_format.bullet.numbered_bullet_start_with = 3
text_frame.paragraphs.add(second_paragraph)
third_paragraph = slides.Paragraph()
third_paragraph.text = "Start at 7"
third_paragraph.paragraph_format.bullet.type = slides.BulletType.NUMBERED
third_paragraph.paragraph_format.bullet.numbered_bullet_start_with = 7
text_frame.paragraphs.add(third_paragraph)
presentation.save("custom_numbered_list.pptx", slides.export.SaveFormat.PPTX)
Bekezdés elrendezésének és vége tulajdonságainak vezérlése
Első sor behúzásának beállítása
Használja a ParagraphFormat.indent tulajdonságot a bekezdés első sorának behúzásához. Ez a tulajdonság csak az első sort mozdítja el a bekezdés bal margójához képest. Egy pozitív érték jobbra tolják az első sort, míg a többi sor a bekezdés törzséhez igazodik.
A teljes bekezdés elmozdításához használja a ParagraphFormat.margin_left‑t. Ha csak az első sort szeretné elmozdítani, használja a ParagraphFormat.indent‑et.
Az alábbi példa több bekezdést hoz létre, és különböző ParagraphFormat.indent értékeket alkalmaz, hogy bemutassa, miként befolyásolja az első sor behúzása a bekezdés elrendezését.
- Hozzon létre egy Presentation példányt.
- Nyissa meg a cél diát.
- Adjunk hozzá egy téglalap AutoShape elemet a diához.
- Hozzáférés az alakzat TextFrame eleméhez, és távolítsa el az alapértelmezett bekezdést.
- Hozzon létre több bekezdést, és állítson be különböző ParagraphFormat.indent értékeket számukra.
- Adja hozzá a bekezdéseket a szövegkerethez.
- Mentse a módosított prezentációt.
Ez a kód megmutatja, hogyan állíthat be bekezdésbehúzást:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 50, 420, 220)
shape.fill_format.fill_type = slides.FillType.NO_FILL
shape.line_format.fill_format.fill_type = slides.FillType.SOLID
shape.line_format.fill_format.solid_fill_color.color = draw.Color.gray
text_frame = shape.text_frame
text_frame.text_frame_format.autofit_type = slides.TextAutofitType.SHAPE
text_frame.paragraphs.clear()
first_paragraph = slides.Paragraph()
first_paragraph.text = "No first-line indent. Wrapped lines start at the same position as the first line."
first_paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
first_paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.black
first_paragraph.paragraph_format.margin_left = 20
first_paragraph.paragraph_format.indent = 0
second_paragraph = slides.Paragraph()
second_paragraph.text = "First-line indent of 20 points. The first line moves to the right, while wrapped lines remain aligned to the paragraph body."
second_paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
second_paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.black
second_paragraph.paragraph_format.margin_left = 20
second_paragraph.paragraph_format.indent = 20
third_paragraph = slides.Paragraph()
third_paragraph.text = "First-line indent of 40 points. This paragraph shows a larger first-line offset to make the effect easier to see."
third_paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
third_paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.black
third_paragraph.paragraph_format.margin_left = 20
third_paragraph.paragraph_format.indent = 40
text_frame.paragraphs.add(first_paragraph)
text_frame.paragraphs.add(second_paragraph)
text_frame.paragraphs.add(third_paragraph)
presentation.save("paragraph_indent.pptx", slides.export.SaveFormat.PPTX)
Az eredmény:

Akasztott behúzás beállítása
Az akasztott behúzás egy olyan bekezdéselrendezés, ahol az első sor balra indul a többi sorhoz képest. Az Aspose.Slides‑ben ezt a hatást a ParagraphFormat.indent tulajdonsággal hozhatja létre. Állítsa az indent értékét negatívra, hogy az első sort balra mozdítsa a bekezdéstörzshöz képest.
Gyakorlatban a ParagraphFormat.margin_left határozza meg a bekezdés törzs bal pozícióját, míg a ParagraphFormat.indent az első sor helyzetét ezen a margón belül. Akasztott behúzás létrehozásához adjon meg egy pozitív margin_left értéket, és egy negatív indent értéket.
Ez a formázás hasznos bibliográfiák, hivatkozások, szószedeti bejegyzések és egyéb bekezdések esetén, ahol a tördelődő soroknak a bekezdés törzse alá kell illeszkedniük, nem pedig az első sor első karaktere alá.
- Hozzon létre egy Presentation példányt.
- Nyissa meg a cél diát.
- Adjunk hozzá egy téglalap AutoShape elemet a diához.
- Hozzáférés az alakzat TextFrame eleméhez, és távolítsa el az alapértelmezett bekezdést.
- Hozzon létre bekezdéseket, és állítson be egy pozitív ParagraphFormat.margin_left értéket minden bekezdéshez.
- Állítson be egy negatív ParagraphFormat.indent értéket az akasztott behúzás létrehozásához.
- Adja hozzá a bekezdéseket a szövegkerethez.
- Mentse a módosított prezentációt.
Ez a kód megmutatja, hogyan állíthat be akasztott behúzást egy bekezdéshez:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 50, 420, 220)
shape.fill_format.fill_type = slides.FillType.NO_FILL
shape.line_format.fill_format.fill_type = slides.FillType.SOLID
shape.line_format.fill_format.solid_fill_color.color = draw.Color.gray
text_frame = shape.text_frame
text_frame.text_frame_format.autofit_type = slides.TextAutofitType.SHAPE
text_frame.paragraphs.clear()
first_paragraph = slides.Paragraph()
first_paragraph.text = "A hanging indent is created by combining a positive left margin with a negative indent. The first line starts to the left, while wrapped lines align with the paragraph body."
first_paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
first_paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.black
first_paragraph.paragraph_format.margin_left = 40
first_paragraph.paragraph_format.indent = -20
second_paragraph = slides.Paragraph()
second_paragraph.text = "This second example uses a deeper hanging indent so the difference between the first line and the wrapped lines is easier to compare."
second_paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
second_paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.black
second_paragraph.paragraph_format.margin_left = 60
second_paragraph.paragraph_format.indent = -30
text_frame.paragraphs.add(first_paragraph)
text_frame.paragraphs.add(second_paragraph)
presentation.save("hanging_indent.pptx", slides.export.SaveFormat.PPTX)
Az eredmény:

A bekezdés végének formázási tulajdonságainak beállítása
A Paragraph.end_paragraph_portion_format tulajdonság szabályozza a bekezdés végjelének formázását. Az alábbi példa betűméretet és latin betűtípust rendel a második bekezdés végjeléhez:
- Töltsön be egy Presentation elemet, és nyissa meg egy diát.
- Adjunk hozzá egy AutoShape elemet, és törölje az alapértelmezett bekezdést.
- Hozzon létre két bekezdést, és adjon hozzá szövegszakaszokat.
- Hozzon létre egy PortionFormat elemet a második bekezdés végjeléhez.
- Állítsa be a PortionFormat.font_height és a PortionFormat.latin_font értékeket.
- Rendelje hozzá a formátumot a Paragraph.end_paragraph_portion_format tulajdonsághoz, majd mentse a prezentációt.
import aspose.slides as slides
with slides.Presentation("Test.pptx") as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 10, 200, 250)
text_frame = shape.text_frame
text_frame.paragraphs.clear()
first_paragraph = slides.Paragraph()
first_paragraph.portions.add(slides.Portion("Sample text"))
second_paragraph = slides.Paragraph()
second_paragraph.portions.add(slides.Portion("Sample text 2"))
end_paragraph_format = slides.PortionFormat()
end_paragraph_format.font_height = 48
end_paragraph_format.latin_font = slides.FontData("Times New Roman")
second_paragraph.end_paragraph_portion_format = end_paragraph_format
text_frame.paragraphs.add(first_paragraph)
text_frame.paragraphs.add(second_paragraph)
presentation.save("end_paragraph_format.pptx", slides.export.SaveFormat.PPTX)
Bekezdés tartalmának importálása és exportálása
HTML‑szöveg importálása bekezdésekbe
A ParagraphCollection.add_from_html segítségével HTML‑jelölést alakíthat bekezdésekké és szakaszókká egy szövegkeretben.
- Hozzon létre egy Presentation példányt.
- Nyisson meg egy diát, és adjunk hozzá egy AutoShape elemet.
- Hozzáférés az alakzat TextFrame eleméhez, és törölje az alapértelmezett bekezdést.
- Olvassa be a forrás‑HTML‑fájlt.
- Adja át az HTML‑sztringet a ParagraphCollection.add_from_html metódusnak.
- Mentse a módosított prezentációt.
Ez a Python‑példa HTML‑t importál egy szövegkeretbe:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape_width = presentation.slide_size.size.width - 20
shape_height = presentation.slide_size.size.height - 20
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 10, shape_width, shape_height)
shape.fill_format.fill_type = slides.FillType.NO_FILL
shape.text_frame.paragraphs.clear()
with open("file.html", "r", encoding="utf-8") as html_stream:
html = html_stream.read()
shape.text_frame.paragraphs.add_from_html(html)
presentation.save("html_text.pptx", slides.export.SaveFormat.PPTX)
Bekezdésszöveg exportálása HTML‑be
A ParagraphCollection.export_to_html metódus segítségével egy kiválasztott bekezdéstartományt exportálhat HTML‑ként.
- Hozzon létre egy Presentation példányt, és töltse be a kívánt prezentációt.
- Nyissa meg a diát, és keresse meg a szöveget tartalmazó AutoShape elemet.
- Hozzáférés az alakzat TextFrame eleméhez.
- Hívja meg a ParagraphCollection.export_to_html metódust a kezdő bekezdés indexével és az exportálandó bekezdések számával.
- Írja a visszaadott HTML‑sztringet egy fájlba.
Ez a Python‑példa az első szöveges alakzat összes bekezdését exportálja:
import aspose.slides as slides
with slides.Presentation("ExportingHTMLText.pptx") as presentation:
shape = presentation.slides[0].shapes[0]
if isinstance(shape, slides.AutoShape) and shape.text_frame is not None:
paragraphs = shape.text_frame.paragraphs
html = paragraphs.export_to_html(0, paragraphs.count, None)
with open("paragraphs.html", "w", encoding="utf-8") as html_stream:
html_stream.write(html)
else:
print("The first shape is not a text shape.")
Bekezdés renderelése képként
A Paragraph osztály biztosítja a get_image metódust egyetlen bekezdés közvetlen rendereléséhez. A metódus egy IImage objektumot ad vissza, amelyet a IImage.save metódussal menthet fájlba vagy stream‑be. Nem szükséges a tartalmazó alakzatot renderelni vagy a bitmapet manuálisan levágni.
A get_image metódus None‑t adhat vissza, ha a bekezdés nem található a szülőgyűjteményben, nincs érvényes renderelési határa, vagy nem renderelhető. Ellenőrizze az eredményt a mentés előtt, és használja a visszakapott képet context manager‑ként a erőforrások felszabadításához.
Bekezdés renderelése alapértelmezett méretarányban
Tegyük fel, hogy van egy sample.pptx nevű prezentációs fájlunk egy diával, ahol az első alakzat egy három bekezdést tartalmazó szövegdoboz.

Az alábbi példa a második bekezdést rendereli egy szabványos szöveges alakzaton alapértelmezett méretarányban, és PNG‑formátumban menti a visszakapott képet:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
shape = presentation.slides[0].shapes[0]
if isinstance(shape, slides.AutoShape) and shape.text_frame is not None and shape.text_frame.paragraphs.count > 1:
paragraph = shape.text_frame.paragraphs[1]
paragraph_image = paragraph.get_image()
if paragraph_image is not None:
with paragraph_image:
paragraph_image.save("paragraph.png", slides.ImageFormat.PNG)
else:
print("The paragraph could not be rendered.")
else:
print("The expected text shape or paragraph was not found.")
Az eredmény:

Bekezdés renderelése táblázatcellában skálázással
Adjunk meg vízszintes és függőleges méretarány‑faktorokat a get_image metódusnak a renderelt bekezdés méretének szabályozásához. Az alábbi példa egy táblázatot hoz létre, a bekezdést az első cellájában a kétszeres szélességben és magasságban rendereli, majd PNG‑képként menti az eredményt:
import aspose.slides as slides
scale_x = 2
scale_y = 2
with slides.Presentation() as presentation:
slide = presentation.slides[0]
table = slide.shapes.add_table(50, 50, [300], [80])
paragraph = table.rows[0][0].text_frame.paragraphs[0]
paragraph.text = "Text in a table cell"
paragraph_image = paragraph.get_image(scale_x, scale_y)
if paragraph_image is not None:
with paragraph_image:
paragraph_image.save("table_paragraph.png", slides.ImageFormat.PNG)
else:
print("The paragraph could not be rendered.")
Az 1‑es faktor megtartja az adott tengely alapértelmezett pixelméretét. Például a 2 mindkét tényező esetén egy képet eredményez, amelynek szélessége és magassága körülbelül kétszerese az alapértelmezettnek, így a pixelek száma négyszeres. A nagyobb tényezők általában élesebb szöveget biztosítanak nagyítás vagy nagy felbontású kimenet esetén, de növelik a memóriahasználatot és a fájlméretet. Az 1‑nél kisebb tényezők kisebb, részletgazdagabb képet adnak. A méretarány megtartásához használjon egyenlő tényezőket; eltérő vízszintes és függőleges tényezők külön-külön nyújtják a kimenetet.
Az egész alakzat renderelése a Shape.get_image metódussal akkor hasznos, ha a kimenetnek tartalmaznia kell az alakzat kitöltését, szegélyét vagy egyéb vizuális kontextusát. Kizárólag bekezdés‑képekhez használja a Paragraph.get_image‑t.
GYIK
Teljesen le tudom tiltani a sorok megtörését egy szövegkeretben?
Igen. Állítsa a TextFrameFormat.wrap_text értékét a megtörés letiltásához, így a sorok nem törnek meg a szövegkeret szélein.
Hogyan kaphatom meg egy adott bekezdés pontos, dián lévő határait?
Használja a Paragraph.get_rect metódust a bekezdés határoló téglalapjának lekéréséhez. A Portion.get_rect egy adott szakasz határait adja vissza.
Hol van szabályozva a bekezdés igazítása (balra, jobbra, középre vagy sorkizárt)?
A ParagraphFormat.alignment egy bekezdés‑szintű beállítás, amely a teljes bekezdésre vonatkozik, függetlenül az egyes szakaszok formázásától.
Be tudok-e állítani nyelvellenőrzési nyelvet a bekezdés egy részére?
Igen. Állítsa be a PortionFormat.language_id értékét az egyes szakaszoknál, így egy bekezdés több nyelven is tartalmazhat szöveget.