Správa textových polí v prezentacích pomocí Pythonu
Úvod
Texty na snímcích jsou obvykle umístěny v textových polích nebo tvarech. Proto pro přidání textu na snímek musíte nejprve přidat textové pole a poté do něj vložit text. Aspose.Slides pro Python poskytuje třídu AutoShape, která umožňuje přidat tvar obsahující text.
Info
Aspose.Slides také poskytuje třídu Shape. Nicméně ne všechny tvary mohou obsahovat text.Note
Proto, když pracujete s tvarem, ke kterému chcete přidat text, měli byste zkontrolovat a potvrdit, že byl přetypován pomocí třídy AutoShape. Teprve potom budete moci pracovat s TextFrame, který je vlastností třídy AutoShape. Viz sekce Update Text na této stránce.Vytváření textových polí na snímcích
Postup pro vytvoření textového pole na snímku:
- Vytvořte instanci třídy Presentation.
- Získejte odkaz na první snímek.
- Přidejte AutoShape s
ShapeType.RECTANGLEna požadovanou pozici na snímku. - Nastavte text ve TextFrame tvaru.
- Uložte prezentaci jako soubor PPTX.
Následující ukázka v Pythonu implementuje tyto kroky:
import aspose.slides as slides
# Vytvořte instanci třídy Presentation.
with slides.Presentation() as presentation:
# Získejte první snímek v prezentaci.
slide = presentation.slides[0]
# Přidejte AutoShape typu RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)
shape.text_frame.text = "Aspose TextBox"
# Uložte prezentaci na disk.
presentation.save("TextBox.pptx", slides.export.SaveFormat.PPTX)
Kontrola, zda je tvar textovým polem
Aspose.Slides poskytuje vlastnost is_text_box na třídě AutoShape, která umožňuje zjistit, zda je tvar textovým polem.

Tato ukázka v Pythonu ukazuje, jak zkontrolovat, zda byl tvar vytvořen jako textové pole:
import aspose.slides as slides
with slides.Presentation("Sample.pptx") as presentation:
for slide in presentation.slides:
for shape in slide.shapes:
if isinstance(shape, slides.AutoShape):
print("shape is a text box" if shape.is_text_box else "shape is not a text box")
Všimněte si, že pokud přidáte AutoShape pomocí třídy ShapeCollection, vlastnost is_text_box tvaru vrátí False. Po přidání textu – ať už metodou add_text_frame nebo nastavením vlastnosti text – is_text_box vrátí True.
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape1 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 10, 100, 40)
# shape1.is_text_box je nepravda
shape1.add_text_frame("shape 1")
# shape1.is_text_box je pravda
shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 110, 100, 40)
# shape2.is_text_box je nepravda
shape2.text_frame.text = "shape 2"
# shape2.is_text_box je pravda
shape3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 210, 100, 40)
# shape3.is_text_box je nepravda
shape3.add_text_frame("")
# shape3.is_text_box je nepravda
shape4 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 310, 100, 40)
# shape4.is_text_box je nepravda
shape4.text_frame.text = ""
# shape4.is_text_box je nepravda
Přidání sloupců do textových polí
Aspose.Slides poskytuje vlastnosti column_count a column_spacing na třídě TextFrameFormat, které umožňují přidávat sloupce do textových polí. Můžete určit počet sloupců a nastavit mezery (v bodech) mezi sloupci.
Následující kód v Pythonu demonstruje tuto operaci:
import aspose.slides as slides
with slides.Presentation() as presentation:
# Získejte první snímek v prezentaci.
slide = presentation.slides[0]
# Přidejte AutoShape typu RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)
# Přidejte TextFrame do obdélníku.
shape.add_text_frame("All of these columns are confined to a single text container—" +
"you can add or delete text, and any new or remaining text automatically reflows " +
"within the container. You cannot have text flow from one container to another, " +
"though—PowerPoint’s column options for text are limited!")
# Získejte formát textu TextFrame.
format = shape.text_frame.text_frame_format
# Zadejte počet sloupců v TextFrame.
format.column_count = 3
# Zadejte mezeru mezi sloupci.
format.column_spacing = 10
# Uložit prezentaci.
presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)
Aktualizace textu
Aspose.Slides umožňuje aktualizovat text v jednom textovém poli nebo v celé prezentaci.
Následující ukázka v Pythonu demonstruje, jak aktualizovat celý text v prezentaci:
import aspose.slides as slides
with slides.Presentation("Sample.pptx") as presentation:
for slide in presentation.slides:
for shape in slide.shapes:
if type(shape) is slides.AutoShape:
for paragraph in shape.text_frame.paragraphs:
for portion in paragraph.portions:
portion.text = portion.text.replace("years", "months")
portion.portion_format.font_bold = 1
# Uložit upravenou prezentaci.
presentation.save("TextChanged.pptx", slides.export.SaveFormat.PPTX)
Přidání textových polí s hypertextovými odkazy
Do textového pole můžete vložit odkaz. Po kliknutí na textové pole se odkaz otevře.
Postup pro přidání textového pole obsahujícího hypertextový odkaz:
- Vytvořte instanci třídy Presentation.
- Získejte odkaz na první snímek.
- Přidejte AutoShape s
ShapeType.RECTANGLEna požadovanou pozici na snímku. - Nastavte text ve TextFrame.
- Získejte odkaz na HyperlinkManager.
- Pomocí vlastnosti
hyperlink_managernastavte externí hypertextový odkaz při kliknutí. - Uložte prezentaci jako soubor PPTX.
Tato ukázka v Pythonu ukazuje, jak přidat textové pole s hypertextovým odkazem na snímek:
import aspose.slides as slides
# Vytvořte instanci třídy Presentation.
with slides.Presentation() as presentation:
# Získejte první snímek v prezentaci.
slide = presentation.slides[0]
# Přidejte AutoShape typu RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)
text_portion = shape.text_frame.paragraphs[0].portions[0]
# Přidejte text do rámce.
text_portion.text = "Aspose.Slides"
# Nastavte hypertextový odkaz pro text úseku.
hyperlink_manager = text_portion.portion_format.hyperlink_manager
hyperlink_manager.set_external_hyperlink_click("http://www.aspose.com")
# Uložte prezentaci jako soubor PPTX.
presentation.save("Hyperlink.pptx", slides.export.SaveFormat.PPTX)
Často kladené otázky
Jaký je rozdíl mezi textovým polem a textovým zástupcem při práci s hlavními snímky?
Placeholder dědí styl/pozici z masteru a může být přepsán na layoutách, zatímco běžné textové pole je nezávislý objekt na konkrétním snímku a nemění se při přepínání layoutů.
Jak mohu provést hromadnou náhradu textu v celé prezentaci, aniž bych zasahoval do textu v grafických objektech, tabulkách a SmartArt?
Omezte iteraci na auto-tvary, které mají textové rámečky, a vyloučte vložené objekty (charts, tables, SmartArt) tím, že jejich kolekce projdete odděleně nebo přeskočíte tyto typy objektů.