PowerPoint szövegbekezdések kezelése Pythonon keresztül Java-val
Áttekintés
Aspose.Slides for Python via Java a szöveget szövegkeretek, bekezdések és részek (Portion) 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 képvisel egy szövegkeretben, és hozzáférést biztosít a részeihez és a bekezdés szintű formázáshoz.
- Portion egy szövegtöredéket (run) képvisel egy bekezdésen belül. Minden résznek saját szövege és karakter szintű formázása lehet.
Egy bekezdés tehát több rész használatával különböző betűtípusú, színű, méretű és egyéb formázású szöveget tartalmazhat.
Bekezdések létrehozása és formázása
Bekezdések létrehozása több részekkel
A következő lépések egy szövegkeretet hoznak létre három bekezdéssel, mindegyik három részt tartalmazva:
- Hozzon létre egy példányt a Presentation osztályból.
- Érje el a megfelelő diát indexe alapján.
- Adjon egy téglalap alakú AutoShape elemet a diára.
- Érje el a forma TextFrame tulajdonságát.
- Használja az alapértelmezett bekezdést, és adjon hozzá két további Paragraph objektumot a szövegkerethez.
- Adjon elegendő Portion objektumot minden bekezdéshez, hogy három részt tartalmazzanak. Az alap bekezdés már egy üres részt tartalmaz.
- Állítsa be minden rész szövegét.
- Alkalmazzon karakter szintű formázást a Portion.getPortionFormat segítségével.
- Mentse el a módosított bemutatót.
Ez a Python példa megvalósítja a lépéseket:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import FillType, NullableBool, Paragraph, Portion, Presentation, SaveFormat, ShapeType
from java.awt import Color
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 150, 300, 150)
text_frame = shape.getTextFrame()
first_paragraph = text_frame.getParagraphs().get_Item(0)
first_paragraph.getPortions().add(Portion())
first_paragraph.getPortions().add(Portion())
second_paragraph = Paragraph()
second_paragraph.getPortions().add(Portion())
second_paragraph.getPortions().add(Portion())
second_paragraph.getPortions().add(Portion())
text_frame.getParagraphs().add(second_paragraph)
third_paragraph = Paragraph()
third_paragraph.getPortions().add(Portion())
third_paragraph.getPortions().add(Portion())
third_paragraph.getPortions().add(Portion())
text_frame.getParagraphs().add(third_paragraph)
paragraph_count = text_frame.getParagraphs().getCount()
for paragraph_index in range(paragraph_count):
paragraph = text_frame.getParagraphs().get_Item(paragraph_index)
portion_count = paragraph.getPortions().getCount()
for portion_index in range(portion_count):
portion = paragraph.getPortions().get_Item(portion_index)
portion.setText(f"Portion {paragraph_index + 1}.{portion_index + 1}")
if portion_index == 0:
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.RED)
portion.getPortionFormat().setFontBold(NullableBool.True_)
portion.getPortionFormat().setFontHeight(15)
elif portion_index == 1:
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLUE)
portion.getPortionFormat().setFontItalic(NullableBool.True_)
portion.getPortionFormat().setFontHeight(18)
presentation.save("paragraphs_with_portions.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Felsorolás és számozott lista létrehozása
Felsorolás vagy számozott lista létrehozása
A pontok és a számozás megkönnyítik a kapcsolódó elemek átláthatóságát. 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.
- Érje el a megfelelő diát indexe alapján.
- Adjon egy AutoShape elemet a kiválasztott diára.
- Érje el a forma TextFrame tulajdonságát.
- Távolítsa el az alap bekezdést a szövegkeretből.
- Hozzon létre egy Paragraph objektumot egy szimbólum pont számára.
- Állítsa a BulletFormat.setType értékét BulletType.Symbol‑re, és adja meg a pont karakterét.
- Állítsa be a bekezdés szövegét, behúzását, 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 a BulletFormat.setType értékét BulletType.Numbered‑re.
- Konfigurálja a számozott pont stílusát, és adja hozzá a bekezdést a szövegkerethez.
- Mentse el a bemutatót.
Ez a Python példa szimbólum pontot és számozott pontot hoz létre:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import BulletType, ColorType, NullableBool, NumberedBulletStyle, Paragraph, Presentation, SaveFormat, ShapeType
from java.awt import Color
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200)
text_frame = shape.getTextFrame()
text_frame.getParagraphs().clear()
symbol_paragraph = Paragraph()
symbol_paragraph.setText("Welcome to Aspose.Slides")
symbol_paragraph.getParagraphFormat().getBullet().setType(BulletType.Symbol)
symbol_paragraph.getParagraphFormat().getBullet().setChar("•")
symbol_paragraph.getParagraphFormat().setIndent(25)
symbol_paragraph.getParagraphFormat().getBullet().getColor().setColorType(ColorType.RGB)
symbol_paragraph.getParagraphFormat().getBullet().getColor().setColor(Color.BLACK)
symbol_paragraph.getParagraphFormat().getBullet().setBulletHardColor(NullableBool.True_)
symbol_paragraph.getParagraphFormat().getBullet().setHeight(100)
text_frame.getParagraphs().add(symbol_paragraph)
numbered_paragraph = Paragraph()
numbered_paragraph.setText("This is a numbered item")
numbered_paragraph.getParagraphFormat().getBullet().setType(BulletType.Numbered)
numbered_paragraph.getParagraphFormat().getBullet().setNumberedBulletStyle(NumberedBulletStyle.BulletCircleNumWDBlackPlain)
numbered_paragraph.getParagraphFormat().setIndent(25)
numbered_paragraph.getParagraphFormat().getBullet().getColor().setColorType(ColorType.RGB)
numbered_paragraph.getParagraphFormat().getBullet().getColor().setColor(Color.BLACK)
numbered_paragraph.getParagraphFormat().getBullet().setBulletHardColor(NullableBool.True_)
numbered_paragraph.getParagraphFormat().getBullet().setHeight(100)
text_frame.getParagraphs().add(numbered_paragraph)
presentation.save("bulleted_and_numbered_list.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Képpontok használata
A képpontok lehetővé teszik egyéni kép használatát szimbólum vagy szám helyett.
- Hozzon létre egy példányt a Presentation osztályból.
- Érje el a megfelelő diát indexe alapján.
- Adjon egy AutoShape elemet, és érje el annak TextFrame tulajdonságát.
- Távolítsa el az alap bekezdést a szövegkeretből.
- Töltse be a pont képet, és adja hozzá a bemutató képgyűjteményéhez PPImage‑ként.
- Hozzon létre egy Paragraph objektumot, és állítsa be a szövegét.
- Állítsa a BulletFormat.setType értékét BulletType.Picture‑re.
- Rendelje hozzá a képet a BulletFormat.getPicture segítségével, és állítsa be a pont magasságát.
- Adja hozzá a bekezdést a szövegkerethez.
- Mentse el a módosított bemutatót.
Ez a Python példa képpontot hoz létre:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import BulletType, Images, Paragraph, Presentation, SaveFormat, ShapeType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
bullet_image = Images.fromFile("bullets.png")
try:
presentation_image = presentation.getImages().addImage(bullet_image)
finally:
bullet_image.dispose()
shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200)
text_frame = shape.getTextFrame()
text_frame.getParagraphs().clear()
paragraph = Paragraph()
paragraph.setText("Welcome to Aspose.Slides")
paragraph.getParagraphFormat().getBullet().setType(BulletType.Picture)
paragraph.getParagraphFormat().getBullet().getPicture().setImage(presentation_image)
paragraph.getParagraphFormat().getBullet().setHeight(100)
text_frame.getParagraphs().add(paragraph)
presentation.save("picture_bullet.pptx", SaveFormat.Pptx)
presentation.save("picture_bullet.ppt", SaveFormat.Ppt)
finally:
presentation.dispose()
Többszintű lista létrehozása
A ParagraphFormat.setDepth beállításával helyezhetünk bekezdéseket egy lista különböző szintjeire. A legfelső szint mélysége 0.
- Hozzon létre egy Presentation objektumot, és érje el egy diát.
- Adjon egy AutoShape elemet, és ürítse ki az alap bekezdést a szövegkeretből.
- Hozzon létre négy bekezdést, és konfigurálja azok pont szimbólumait.
- Állítsa be a ParagraphFormat.setDepth értékeket
0,1,2és3‑ra. - Adja hozzá a bekezdéseket a szövegkerethez, és mentse el a bemutatót.
Ez a Python példa négyszintű felsorolást hoz létre:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import BulletType, FillType, Paragraph, Presentation, SaveFormat, ShapeType
from java.awt import Color
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200)
text_frame = shape.getTextFrame()
text_frame.getParagraphs().clear()
first_paragraph = Paragraph()
first_paragraph.setText("Content")
first_paragraph.getParagraphFormat().getBullet().setType(BulletType.Symbol)
first_paragraph.getParagraphFormat().getBullet().setChar("•")
first_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
first_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
first_paragraph.getParagraphFormat().setDepth(0)
second_paragraph = Paragraph()
second_paragraph.setText("Second level")
second_paragraph.getParagraphFormat().getBullet().setType(BulletType.Symbol)
second_paragraph.getParagraphFormat().getBullet().setChar('-')
second_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
second_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
second_paragraph.getParagraphFormat().setDepth(1)
third_paragraph = Paragraph()
third_paragraph.setText("Third level")
third_paragraph.getParagraphFormat().getBullet().setType(BulletType.Symbol)
third_paragraph.getParagraphFormat().getBullet().setChar("•")
third_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
third_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
third_paragraph.getParagraphFormat().setDepth(2)
fourth_paragraph = Paragraph()
fourth_paragraph.setText("Fourth level")
fourth_paragraph.getParagraphFormat().getBullet().setType(BulletType.Symbol)
fourth_paragraph.getParagraphFormat().getBullet().setChar('-')
fourth_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
fourth_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
fourth_paragraph.getParagraphFormat().setDepth(3)
text_frame.getParagraphs().add(first_paragraph)
text_frame.getParagraphs().add(second_paragraph)
text_frame.getParagraphs().add(third_paragraph)
text_frame.getParagraphs().add(fourth_paragraph)
presentation.save("multilevel_list.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Számozott listaelemek egyedi kezdőértékkel
A BulletFormat.setNumberedBulletStartWith segítségével állítható be a számozott bekezdés kezdeti száma.
- Hozzon létre egy Presentation objektumot, és adjon egy AutoShape elemet egy diára.
- Távolítsa el az alap bekezdést a forma szövegkeretéből.
- Hozzon létre három számozott bekezdést.
- Állítsa be a BulletFormat.setNumberedBulletStartWith értékét
2,3és7‑re a megfelelő bekezdésekhez. - Adja hozzá a bekezdéseket a szövegkerethez, és mentse el a bemutatót.
Ez a Python példa egyedi kezdőszámot rendel minden bekezdéshez:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import BulletType, Paragraph, Presentation, SaveFormat, ShapeType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200)
text_frame = shape.getTextFrame()
text_frame.getParagraphs().clear()
first_paragraph = Paragraph()
first_paragraph.setText("Start at 2")
first_paragraph.getParagraphFormat().getBullet().setType(BulletType.Numbered)
first_paragraph.getParagraphFormat().getBullet().setNumberedBulletStartWith(2)
text_frame.getParagraphs().add(first_paragraph)
second_paragraph = Paragraph()
second_paragraph.setText("Start at 3")
second_paragraph.getParagraphFormat().getBullet().setType(BulletType.Numbered)
second_paragraph.getParagraphFormat().getBullet().setNumberedBulletStartWith(3)
text_frame.getParagraphs().add(second_paragraph)
third_paragraph = Paragraph()
third_paragraph.setText("Start at 7")
third_paragraph.getParagraphFormat().getBullet().setType(BulletType.Numbered)
third_paragraph.getParagraphFormat().getBullet().setNumberedBulletStartWith(7)
text_frame.getParagraphs().add(third_paragraph)
presentation.save("custom_numbered_list.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Bekezdéselrendezés és végpont tulajdonságok vezérlése
Első sor behúzásának beállítása
A ParagraphFormat.setIndent segítségével szabályozható egy bekezdés első sorának behúzása. Ez a módszer csak az első sort helyezi el a bekezdés bal margójához képest. Pozitív érték a első sort jobbra tolja, míg a többi sor a bekezdés törzséhez igazodik.
Használja a ParagraphFormat.setMarginLeft‑t, ha az egész bekezdést szeretné elmozgatni. A ParagraphFormat.setIndent csak az első sor eltolására szolgál.
Az alábbi példa több bekezdést hoz létre, és különböző ParagraphFormat.setIndent értékeket alkalmaz, hogy bemutassa, a első sor behúzása hogyan befolyásolja a bekezdés elrendezését.
- Hozzon létre egy példányt a Presentation osztályból.
- Érje el a cél diát.
- Adjon egy téglalap alakú AutoShape elemet a diára.
- Érje el a forma TextFrame tulajdonságát, és távolítsa el az alap bekezdést.
- Hozzon létre több bekezdést, és állítson be különböző ParagraphFormat.setIndent értékeket.
- Adja hozzá a bekezdéseket a szövegkerethez.
- Mentse el a módosított bemutatót.
Ez a kód megmutatja, hogyan állítható be egy bekezdés behúzása:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import FillType, Paragraph, Presentation, SaveFormat, ShapeType, TextAutofitType
from java.awt import Color
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 420, 220)
shape.getFillFormat().setFillType(FillType.NoFill)
shape.getLineFormat().getFillFormat().setFillType(FillType.Solid)
shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY)
text_frame = shape.getTextFrame()
text_frame.getTextFrameFormat().setAutofitType(TextAutofitType.Shape)
text_frame.getParagraphs().clear()
first_paragraph = Paragraph()
first_paragraph.setText("No first-line indent. Wrapped lines start at the same position as the first line.")
first_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
first_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
first_paragraph.getParagraphFormat().setMarginLeft(20.0)
first_paragraph.getParagraphFormat().setIndent(0.0)
second_paragraph = Paragraph()
second_paragraph.setText("First-line indent of 20 points. The first line moves to the right, while wrapped lines remain aligned to the paragraph body.")
second_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
second_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
second_paragraph.getParagraphFormat().setMarginLeft(20.0)
second_paragraph.getParagraphFormat().setIndent(20.0)
third_paragraph = Paragraph()
third_paragraph.setText("First-line indent of 40 points. This paragraph shows a larger first-line offset to make the effect easier to see.")
third_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
third_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
third_paragraph.getParagraphFormat().setMarginLeft(20.0)
third_paragraph.getParagraphFormat().setIndent(40.0)
text_frame.getParagraphs().add(first_paragraph)
text_frame.getParagraphs().add(second_paragraph)
text_frame.getParagraphs().add(third_paragraph)
presentation.save("paragraph_indent.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Az eredmény:

Függő behúzás beállítása
A függő behúzás 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.setIndent segítségével hozhatja létre. Negatív érték átmozgatja az első sort balra a bekezdés törzséhez képest.
Gyakorlatban a ParagraphFormat.setMarginLeft határozza meg a bekezdés törzsének bal pozícióját, a ParagraphFormat.setIndent pedig az első sor helyzetét ehhez a margóhoz képest. Függő behúzás létrehozásához adjon pozitív értéket a ParagraphFormat.setMarginLeft‑nek, és negatív értéket a ParagraphFormat.setIndent‑nek.
Ez a formázás hasznos bibliográfiák, hivatkozások, szószedetek és egyéb bekezdések esetén, ahol a sortöréseknek a bekezdés törzsének alá kell illeszkedniük, nem pedig az első sor első karakteréhez.
- Hozzon létre egy példányt a Presentation osztályból.
- Érje el a cél diát.
- Adjon egy téglalap alakú AutoShape elemet a diára.
- Érje el a forma TextFrame tulajdonságát, és távolítsa el az alap bekezdést.
- Hozzon létre bekezdéseket, és adjon pozitív értéket a ParagraphFormat.setMarginLeft számára minden bekezdéshez.
- Adjon negatív értéket a ParagraphFormat.setIndent számára a függő behúzás eléréséhez.
- Adja hozzá a bekezdéseket a szövegkerethez.
- Mentse el a módosított bemutatót.
Ez a kód megmutatja, hogyan állítható be egy bekezdés függő behúzása:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import FillType, Paragraph, Presentation, SaveFormat, ShapeType, TextAutofitType
from java.awt import Color
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 420, 220)
shape.getFillFormat().setFillType(FillType.NoFill)
shape.getLineFormat().getFillFormat().setFillType(FillType.Solid)
shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY)
text_frame = shape.getTextFrame()
text_frame.getTextFrameFormat().setAutofitType(TextAutofitType.Shape)
text_frame.getParagraphs().clear()
first_paragraph = Paragraph()
first_paragraph.setText("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.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
first_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
first_paragraph.getParagraphFormat().setMarginLeft(40.0)
first_paragraph.getParagraphFormat().setIndent(-20.0)
second_paragraph = Paragraph()
second_paragraph.setText("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.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
second_paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
second_paragraph.getParagraphFormat().setMarginLeft(60.0)
second_paragraph.getParagraphFormat().setIndent(-30.0)
text_frame.getParagraphs().add(first_paragraph)
text_frame.getParagraphs().add(second_paragraph)
presentation.save("hanging_indent.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Az eredmény:

Bekezdés végpont formátumának beállítása
A Paragraph.setEndParagraphPortionFormat szabályozza a bekezdés végjelezésének formázását. Az alábbi példa betűméretet és latin betűtípust állít be a második bekezdés végjelezésére:
- Töltsön be egy Presentation fájlt, és érje el egy diát.
- Adjon egy AutoShape elemet, és távolítsa el az alap bekezdést.
- Hozzon létre két bekezdést, és adjon szövegrétegeket hozzájuk.
- Hozzon létre egy PortionFormat objektumot a második bekezdés végjelezéséhez.
- Állítsa be a BasePortionFormat.setFontHeight és a BasePortionFormat.setLatinFont értékeket.
- Rendelje hozzá a formátumot a Paragraph.setEndParagraphPortionFormat segítségével, és mentse el a bemutatót.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import FontData, Paragraph, Portion, PortionFormat, Presentation, SaveFormat, ShapeType
presentation = Presentation("Test.pptx")
try:
slide = presentation.getSlides().get_Item(0)
shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, 200, 250)
text_frame = shape.getTextFrame()
text_frame.getParagraphs().clear()
first_paragraph = Paragraph()
first_portion = Portion("Sample text")
first_paragraph.getPortions().add(first_portion)
second_paragraph = Paragraph()
second_portion = Portion("Sample text 2")
second_paragraph.getPortions().add(second_portion)
end_paragraph_format = PortionFormat()
end_paragraph_format.setFontHeight(48)
latin_font = FontData("Times New Roman")
end_paragraph_format.setLatinFont(latin_font)
second_paragraph.setEndParagraphPortionFormat(end_paragraph_format)
text_frame.getParagraphs().add(first_paragraph)
text_frame.getParagraphs().add(second_paragraph)
presentation.save("end_paragraph_format.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Bekezdés tartalmának importálása és exportálása
HTML szöveg importálása bekezdésekbe
A ParagraphCollection.addFromHtml használatával HTML jelölést alakíthat bekezdésekké és részekké egy szövegkeretben.
- Hozzon létre egy példányt a Presentation osztályból.
- Érje el egy diát, és adjon egy AutoShape elemet.
- Érje el a forma TextFrame tulajdonságát, és távolítsa el az alap bekezdést.
- Olvassa be a forrás HTML fájlt.
- Adja át a HTML karakterláncot a ParagraphCollection.addFromHtml metódusnak.
- Mentse el a módosított bemutatót.
Ez a Python példa HTML-t importál egy szövegkeretbe:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import FillType, Presentation, SaveFormat, ShapeType
from pathlib import Path
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
shape_width = presentation.getSlideSize().getSize().getWidth() - 20
shape_height = presentation.getSlideSize().getSize().getHeight() - 20
shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, shape_width, shape_height)
shape.getFillFormat().setFillType(FillType.NoFill)
shape.getTextFrame().getParagraphs().clear()
try:
html = Path("file.html").read_text(encoding="utf-8")
shape.getTextFrame().getParagraphs().addFromHtml(html)
presentation.save("html_text.pptx", SaveFormat.Pptx)
except OSError as exception:
print("The HTML file could not be read: " + str(exception))
finally:
presentation.dispose()
Bekezdés szöveg exportálása HTML-be
A ParagraphCollection.exportToHtml segítségével egy kiválasztott bekezdéstarományt exportálhat HTML formátumban.
- Hozzon létre egy példányt a Presentation osztályból, és töltse be a kívánt bemutatót.
- Érje el a diát, és keresse meg a szöveget tartalmazó AutoShape elemet.
- Érje el a forma TextFrame tulajdonságát.
- Hívja meg a ParagraphCollection.exportToHtml metódust a kezdő bekezdés indexével és a exportálandó bekezdések számával.
- Írja a visszakapott HTML karakterláncot egy fájlba.
Ez a Python példa az első szövegforma összes bekezdését exportálja:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import AutoShape, Presentation
from pathlib import Path
presentation = Presentation("ExportingHTMLText.pptx")
try:
shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
if isinstance(shape, AutoShape):
text_shape = shape
text_frame = text_shape.getTextFrame()
if text_frame is not None:
paragraphs = text_frame.getParagraphs()
html = paragraphs.exportToHtml(0, paragraphs.getCount(), None)
try:
Path("paragraphs.html").write_text(str(html), encoding="utf-8")
except OSError as exception:
print("The HTML file could not be written: " + str(exception))
else:
print("The first shape does not contain a text frame.")
else:
print("The first shape is not a text shape.")
finally:
presentation.dispose()
Bekezdés renderelése képként
A Paragraph.getImage közvetlenül renderel egy egyedi bekezdést, és képobjektust ad vissza. A visszakapott képet a save metódussal mentheti fájlba vagy streambe. Nem szükséges a tartalmazó alakzatot renderelni vagy a bitmapet manuálisan vágni.
A Paragraph.getImage 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 mentés előtt, és a használat után szabadítsa fel a visszakapott képet.
Bekezdés renderelése az alapméretezésben
Tegyük fel, hogy van egy sample.pptx nevű bemutatófájl 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övegalakzatban alapméretezésben, és PNG formátumban menti a visszakapott képet. A finally blokk biztosítja a kép helyes felszabadítását.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import AutoShape, ImageFormat, Presentation
presentation = Presentation("sample.pptx")
try:
shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
if isinstance(shape, AutoShape):
text_shape = shape
text_frame = text_shape.getTextFrame()
if text_frame is not None and text_frame.getParagraphs().getCount() > 1:
paragraph = text_frame.getParagraphs().get_Item(1)
paragraph_image = paragraph.getImage()
if paragraph_image is not None:
try:
paragraph_image.save("paragraph.png", ImageFormat.Png)
finally:
paragraph_image.dispose()
else:
print("The paragraph could not be rendered.")
else:
print("The expected paragraph was not found.")
else:
print("The first shape is not a text shape.")
finally:
presentation.dispose()
Az eredmény:

Bekezdés renderelése táblázatcellában méretezéssel
Használja a Paragraph.getImage túlterhelést, amely scale_x és scale_y paramétereket fogad a vízszintes és függőleges méretező tényezők beállításához. Az alábbi példa egy táblázatot hoz létre, és az első cellájában lévő bekezdést kétszeres szélesség és magasság mellett rendereli, majd PNG képként menti.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
scale_x = 2.0
scale_y = 2.0
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
table = slide.getShapes().addTable(50, 50, [300.0], [80.0])
paragraph = table.get_Item(0, 0).getTextFrame().getParagraphs().get_Item(0)
paragraph.setText("Text in a table cell")
paragraph_image = paragraph.getImage(scale_x, scale_y)
if paragraph_image is not None:
try:
paragraph_image.save("table_paragraph.png", ImageFormat.Png)
finally:
paragraph_image.dispose()
else:
print("The paragraph could not be rendered.")
finally:
presentation.dispose()
Az 1 tényező megtartja az adott tengelyt alap pixelméretben. Például a 2 mindkét tényezőnél olyan képet eredményez, amelynek szélessége és magassága megközelítőleg kétszerese az alapméretnek, ezáltal négyszer annyi pixel keletkezik. A nagyobb tényezők általában élesebb szöveget eredményeznek nagyítás vagy nagy felbontású kimenet esetén, de nő a memóriaigény és a fájlméret is. Az 1‑nél kisebb tényezők kisebb, kevésbé részletes képeket adnak. Az azonos tényezők megőrzik a bekezdés képarányát; a különböző vízszintes és függőleges tényezők önállóan nyújtják a kimenetet.
Egy teljes alakzat renderelése a Shape.getImage segítségével akkor hasznos, ha a kimenetnek tartalmaznia kell az alakzat kitöltését, szegélyét vagy egyéb vizuális kontextusát. Csak bekezdésképhez használja a Paragraph.getImage‑t.
GYIK
Teljesen letilthatom a sortörést egy szövegkereten belül?
Igen. Állítsa a TextFrameFormat.setWrapText értékét a törléshez, hogy a sorok ne törjenek meg a szövegkeret szélén.
Hogyan kaphatom meg egy adott bekezdés pontos diákon lévő határait?
Használja a Paragraph.getRect metódust a bekezdés körülhatároló téglalap lekéréséhez. A Portion.getRect egyedi rész határait adja vissza.
Hol van a bekezdés igazítás (balra, jobbra, középre vagy sorkizárt) szabályozva?
A ParagraphFormat.setAlignment egy bekezdés-szintű beállítás, amely a teljes bekezdésre vonatkozik, függetlenül az egyedi részek formázásától.
Beállíthatom a nyelvhelyességi nyelvet a bekezdés egy részére?
Igen. Állítsa a BasePortionFormat.setLanguageId értékét egyedi részeknél, így egy bekezdés több nyelven is tartalmazhat szöveget.