Zarządzanie polami tekstowymi w prezentacjach przy użyciu Pythona
Wprowadzenie
Teksty na slajdach zazwyczaj znajdują się w polach tekstowych lub kształtach. Dlatego, aby dodać tekst do slajdu, musisz dodać pole tekstowe, a następnie umieścić w nim tekst. Aspose.Slides for Python udostępnia klasę AutoShape umożliwiającą dodanie kształtu zawierającego tekst.
Info
Aspose.Slides udostępnia również klasę Shape. Jednak nie wszystkie kształty mogą zawierać tekst.Note
Dlatego, pracując z kształtem, któremu chcesz dodać tekst, warto sprawdzić i potwierdzić, że został on rzutowany przy użyciu klasy AutoShape. Dopiero wtedy będziesz mógł pracować z TextFrame, które jest właściwością klasy AutoShape. Zobacz sekcję Aktualizuj tekst na tej stronie.Tworzenie pól tekstowych na slajdach
Aby utworzyć pole tekstowe na slajdzie:
- Utwórz instancję klasy Presentation.
- Uzyskaj odwołanie do pierwszego slajdu.
- Dodaj AutoShape z
ShapeType.RECTANGLEw wybranej pozycji na slajdzie. - Ustaw tekst w TextFrame kształtu.
- Zapisz prezentację jako plik PPTX.
Poniższy przykład w języku Python implementuje te kroki:
import aspose.slides as slides
# Utwórz instancję klasy Presentation.
with slides.Presentation() as presentation:
# Pobierz pierwszy slajd w prezentacji.
slide = presentation.slides[0]
# Dodaj AutoShape typu RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)
shape.text_frame.text = "Aspose TextBox"
# Zapisz prezentację na dysku.
presentation.save("TextBox.pptx", slides.export.SaveFormat.PPTX)
Sprawdzenie, czy kształt jest polem tekstowym
Aspose.Slides udostępnia właściwość is_text_box klasy AutoShape, która pozwala określić, czy kształt jest polem tekstowym.

Ten przykład w Pythonie pokazuje, jak sprawdzić, czy kształt został utworzony jako pole tekstowe:
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")
Zwróć uwagę, że jeśli dodasz AutoShape przy użyciu klasy ShapeCollection, właściwość is_text_box kształtu zwraca False. Jednak po dodaniu tekstu — za pomocą metody add_text_frame lub ustawiając właściwość text — is_text_box zwraca 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 jest fałsz
shape1.add_text_frame("shape 1")
# shape1.is_text_box jest prawda
shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 110, 100, 40)
# shape2.is_text_box jest fałsz
shape2.text_frame.text = "shape 2"
# shape2.is_text_box jest prawda
shape3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 210, 100, 40)
# shape3.is_text_box jest fałsz
shape3.add_text_frame("")
# shape3.is_text_box jest fałsz
shape4 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 310, 100, 40)
# shape4.is_text_box jest fałsz
shape4.text_frame.text = ""
# shape4.is_text_box jest fałsz
Dodawanie kolumn do pól tekstowych
Aspose.Slides udostępnia właściwości column_count i column_spacing klasy TextFrameFormat umożliwiające dodawanie kolumn do pól tekstowych. Możesz określić liczbę kolumn oraz ustawić odstęp (w punktach) pomiędzy kolumnami.
Poniższy kod w Pythonie demonstruje tę operację:
import aspose.slides as slides
with slides.Presentation() as presentation:
# Pobierz pierwszy slajd w prezentacji.
slide = presentation.slides[0]
# Dodaj AutoShape typu RECTANGLE.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)
# Dodaj TextFrame do prostokąta.
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!")
# Pobierz format tekstu TextFrame.
format = shape.text_frame.text_frame_format
# Określ liczbę kolumn w TextFrame.
format.column_count = 3
# Określ odstęp między kolumnami.
format.column_spacing = 10
# Zapisz prezentację.
presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)
Aktualizacja tekstu
Aspose.Slides umożliwia aktualizację tekstu w pojedynczym polu tekstowym lub w całej prezentacji.
Poniższy przykład w Pythonie pokazuje, jak zaktualizować cały tekst w prezentacji:
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
# Zapisz zmodyfikowaną prezentację.
presentation.save("TextChanged.pptx", slides.export.SaveFormat.PPTX)
Dodawanie pól tekstowych z hiperłączami
Możesz wstawić odnośnik w polu tekstowym. Po kliknięciu pola tekstowego odnośnik zostanie otwarty.
Aby dodać pole tekstowe zawierające hiperłącze, wykonaj następujące kroki:
- Utwórz instancję klasy Presentation.
- Uzyskaj odwołanie do pierwszego slajdu.
- Dodaj AutoShape z
ShapeType.RECTANGLEw wybranej pozycji na slajdzie. - Ustaw tekst w TextFrame kształtu.
- Uzyskaj odwołanie do HyperlinkManager.
- Użyj właściwości
hyperlink_manager, aby ustawić zewnętrzne hiperłącze kliknięcia. - Zapisz prezentację jako plik PPTX.
Ten przykład w Pythonie pokazuje, jak dodać pole tekstowe z hiperłączem do slajdu:
import aspose.slides as slides
# Utwórz instancję klasy Presentation.
with slides.Presentation() as presentation:
# Pobierz pierwszy slajd w prezentacji.
slide = presentation.slides[0]
# Dodaj 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]
# Dodaj tekst do ramki.
text_portion.text = "Aspose.Slides"
# Ustaw hiperłącze dla tekstu części.
hyperlink_manager = text_portion.portion_format.hyperlink_manager
hyperlink_manager.set_external_hyperlink_click("http://www.aspose.com")
# Zapisz prezentację jako plik PPTX.
presentation.save("Hyperlink.pptx", slides.export.SaveFormat.PPTX)
FAQ
Jaka jest różnica między polem tekstowym a tekstowym placeholderem przy pracy z slajdami‑mistrzami?
Placeholder (placeholder) dziedziczy styl/pozycję z master i może być nadpisany w layouts, podczas gdy zwykłe pole tekstowe jest niezależnym obiektem na konkretnym slajdzie i nie zmienia się po przełączeniu układów.
Jak wykonać masową zamianę tekstu w całej prezentacji bez modyfikacji tekstu w wykresach, tabelach i SmartArt?
Ogranicz iterację do auto‑kształtów posiadających ramki tekstowe i wyklucz osadzone obiekty (charts, tables, SmartArt) poprzez przeglądanie ich kolekcji oddzielnie lub pomijanie tych typów obiektów.