Formatowanie tekstu prezentacji w Pythonie
Przegląd
Ten artykuł pokazuje, jak formatować tekst w prezentacjach PowerPoint i OpenDocument przy użyciu Aspose.Slides dla Pythona w .NET. Obejmuje kolory tła, przezroczystość, odstępy między znakami, właściwości czcionki, obrót, odstępy akapitu, zachowanie autofit, kotwiczenie tekstu, tabulatory i ustawienia języka.
W poniższych przykładach użyjemy pliku o nazwie “sample.pptx”, który zawiera pojedyncze pole tekstowe na pierwszym slajdzie z następującym tekstem:

Aby znaleźć i podświetlić dosłowny tekst lub dopasowania wyrażeń regularnych, zobacz Wyszukiwanie i zamiana tekstu.
Ustaw kolor tła tekstu
Użyj ParagraphFormat.default_portion_format aby ustawić domyślny kolor wyróżnienia dla akapitu lub użyj PortionFormat.highlight_color dla pojedynczych fragmentów tekstu.
Poniższy przykład kodu pokazuje, jak ustawić kolor tła dla całego akapitu:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
# Ustaw kolor wyróżnienia dla całego akapitu.
paragraph.paragraph_format.default_portion_format.highlight_color.color = draw.Color.light_gray
presentation.save("gray_paragraph.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Poniższy przykład kodu demonstruje, jak ustawić kolor tła dla fragmentów tekstu z pogrubioną czcionką:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
for portion in paragraph.portions:
if portion.portion_format.get_effective().font_bold:
# Ustaw kolor wyróżnienia dla fragmentu tekstu.
portion.portion_format.highlight_color.color = draw.Color.light_gray
presentation.save("gray_text_portions.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Wyrównaj akapity tekstu
Użyj ParagraphFormat.alignment aby ustawić wyrównanie akapitu w ramce tekstowej. Wartość może być wyśrodkowana, wyrównana do lewej, do prawej, wyjustowana itp.
Poniższy przykład kodu pokazuje, jak wyrównać akapit do środka:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
# Ustaw wyrównanie akapitu do środka.
paragraph.paragraph_format.alignment = slides.TextAlignment.CENTER
presentation.save("aligned_paragraph.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Ustaw przezroczystość tekstu
Przezroczystość tekstu jest kontrolowana przez komponent alfa koloru przypisanego do PortionFormat.fill_format. W poniższych przykładach alpha = 50 to wartość kanału alfa ARGB w skali 0‑255, a nie procent przezroczystości.
Poniższy przykład kodu pokazuje, jak zastosować przezroczystość do całego akapitu:
import aspose.pydrawing as draw
import aspose.slides as slides
alpha = 50
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
# Ustaw kolor wypełnienia tekstu na kolor przezroczysty.
paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.from_argb(alpha, draw.Color.black)
presentation.save("transparent_paragraph.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Poniższy przykład kodu pokazuje, jak zastosować przezroczystość do fragmentów tekstu z pogrubioną czcionką:
import aspose.pydrawing as draw
import aspose.slides as slides
alpha = 50
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
for portion in paragraph.portions:
if portion.portion_format.get_effective().font_bold:
# Ustaw przezroczystość fragmentu tekstu.
portion.portion_format.fill_format.fill_type = slides.FillType.SOLID
portion.portion_format.fill_format.solid_fill_color.color = draw.Color.from_argb(alpha, draw.Color.black)
presentation.save("transparent_text_portions.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Ustaw odstępy między znakami w tekście
Użyj BasePortionFormat.spacing aby rozszerzyć lub zwęzić odstępy między znakami w ramce tekstowej.
Poniższy kod Pythona pokazuje, jak rozszerzyć odstępy znaków w całym akapicie:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
# Uwaga: użyj wartości ujemnych, aby skompresować odstępy między znakami.
paragraph.paragraph_format.default_portion_format.spacing = 3 # Rozszerz odstępy między znakami.
presentation.save("character_spacing_in_paragraph.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Poniższy przykład kodu pokazuje, jak rozszerzyć odstępy znaków w fragmentach tekstu z pogrubioną czcionką:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
for portion in paragraph.portions:
if portion.portion_format.get_effective().font_bold:
# Uwaga: użyj wartości ujemnych, aby skompresować odstępy między znakami.
portion.portion_format.spacing = 3 # Rozszerz odstępy między znakami.
presentation.save("character_spacing_in_text_portions.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Wyłącz kerning dla określonych czcionek
W niektórych przypadkach tekst renderowany przez Aspose.Slides może wyglądać nieco ściślej niż ten sam tekst wyświetlany w PowerPoint. Może się tak zdarzyć, ponieważ PowerPoint może ignorować dane kerningu dla niektórych czcionek, nawet gdy czcionka zawiera prawidłowe informacje o kerningu i kerning jest włączony w ustawieniach PowerPoint.
Aby uzyskać wynik bardziej zbliżony do PowerPoint w takich sytuacjach, możesz wyłączyć kerning dla fragmentów tekstu używających dotkniętej czcionki. Ustaw BasePortionFormat.kerning_minimal_size na wartość znacznie większą niż rzeczywisty rozmiar czcionki:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
target_font = "Roboto"
for paragraph in auto_shape.text_frame.paragraphs:
for portion in paragraph.portions:
latin_font = portion.portion_format.latin_font
east_asian_font = portion.portion_format.east_asian_font
complex_script_font = portion.portion_format.complex_script_font
if ((latin_font is not None and latin_font.font_name == target_font) or
(east_asian_font is not None and east_asian_font.font_name == target_font) or
(complex_script_font is not None and complex_script_font.font_name == target_font)):
portion.portion_format.kerning_minimal_size = 100
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
To ustawienie zapobiega stosowaniu kerningu do pasujących fragmentów tekstu i może pomóc wyrównać renderowanie Aspose.Slides do wizualnego wyjścia PowerPoint dla czcionek dotkniętych tym specyficznym zachowaniem PowerPoint.
Zarządzaj właściwościami czcionki tekstu
Właściwości czcionki można ustawiać na poziomie akapitu za pomocą ParagraphFormat.default_portion_format lub na poszczególnych fragmentach za pomocą PortionFormat.
Poniższy kod ustawia czcionkę i styl tekstu dla całego akapitu: stosuje rozmiar czcionki, pogrubienie, pochylenie, kreskowane podkreślenie oraz czcionkę Times New Roman dla wszystkich fragmentów w akapicie.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
# Ustaw właściwości czcionki dla akapitu.
paragraph.paragraph_format.default_portion_format.font_height = 12
paragraph.paragraph_format.default_portion_format.font_bold = slides.NullableBool.TRUE
paragraph.paragraph_format.default_portion_format.font_italic = slides.NullableBool.TRUE
paragraph.paragraph_format.default_portion_format.font_underline = slides.TextUnderlineType.DOTTED
paragraph.paragraph_format.default_portion_format.latin_font = slides.FontData("Times New Roman")
presentation.save("font_properties_for_paragraph.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Poniższy przykład kodu stosuje podobne właściwości do fragmentów tekstu z pogrubioną czcionką:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
for portion in paragraph.portions:
if portion.portion_format.get_effective().font_bold:
# Ustaw właściwości czcionki dla fragmentu tekstu.
portion.portion_format.font_height = 13
portion.portion_format.font_italic = slides.NullableBool.TRUE
portion.portion_format.font_underline = slides.TextUnderlineType.DOTTED
portion.portion_format.latin_font = slides.FontData("Times New Roman")
presentation.save("font_properties_for_text_portions.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Ustaw obrót tekstu
Użyj TextFrameFormat.text_vertical_type aby ustawić predefiniowaną orientację tekstu w kształcie.
Poniższy przykład kodu ustawia orientację tekstu w kształcie na VERTICAL270, co obraca tekst o 90 stopni przeciwnie do ruchu wskazówek zegara:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
auto_shape.text_frame.text_frame_format.text_vertical_type = slides.TextVerticalType.VERTICAL270
presentation.save("text_rotation.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Ustaw własny obrót ramki tekstowej
Użyj TextFrameFormat.rotation_angle aby ustawić własny kąt obrotu dla TextFrame.
Poniższy przykład kodu obraca ramkę tekstową o 3 stopnie zgodnie z ruchem wskazówek zegara w ramach kształtu:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
auto_shape.text_frame.text_frame_format.rotation_angle = 3
presentation.save("custom_text_rotation.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Ustaw odstępy między wierszami akapitów
Aspose.Slides udostępnia ParagraphFormat.space_after, ParagraphFormat.space_before i ParagraphFormat.space_within do kontrolowania odstępów akapitu. Właściwości te są używane w następujący sposób:
- Użyj dodatniej wartości, aby określić odstęp jako procent wysokości wiersza.
- Użyj ujemnej wartości, aby określić odstęp w punktach.
Poniższy przykład kodu pokazuje, jak określić odstęp wierszy w akapicie:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
paragraph.paragraph_format.space_within = 200
presentation.save("line_spacing.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Ustaw typ autofit dla ramek tekstowych
TextFrameFormat.autofit_type określa, jak tekst zachowuje się, gdy przekracza granice swojego kontenera. Użyj go, aby kontrolować, czy tekst się zmniejsza, wypływa poza obszar, czy automatycznie zmienia rozmiar kształtu.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
auto_shape.text_frame.text_frame_format.autofit_type = slides.TextAutofitType.SHAPE
presentation.save("autofit_type.pptx", slides.export.SaveFormat.PPTX)
Ustaw punkt kotwiczenia ramek tekstowych
TextFrameFormat.anchoring_type definiuje, jak tekst jest pozycjonowany pionowo wewnątrz kształtu, np. u góry, w środku lub u dołu.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
auto_shape.text_frame.text_frame_format.anchoring_type = slides.TextAnchorType.BOTTOM
presentation.save("text_anchor.pptx", slides.export.SaveFormat.PPTX)
Ustaw tabulację tekstu
Użyj ParagraphFormat.default_tab_size i ParagraphFormat.tabs aby skonfigurować tabulatory w akapicie.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
paragraph.paragraph_format.default_tab_size = 100
paragraph.paragraph_format.tabs.add(30, slides.TabAlignment.LEFT)
presentation.save("paragraph_tabs.pptx", slides.export.SaveFormat.PPTX)
Wynik:

Ustaw język sprawdzania pisowni
Aspose.Slides udostępnia PortionFormat.language_id, który pozwala ustawić język sprawdzania pisowni dla fragmentu tekstu. Język ten określa, którego języka używać do sprawdzania ortografii i gramatyki w PowerPoint.
Poniższy przykład kodu pokazuje, jak ustawić język sprawdzania pisowni dla fragmentu tekstu:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
paragraph.portions.clear()
font = slides.FontData("SimSun")
text_portion = slides.Portion()
text_portion.portion_format.complex_script_font = font
text_portion.portion_format.east_asian_font = font
text_portion.portion_format.latin_font = font
# Ustaw Id języka sprawdzania pisowni.
text_portion.portion_format.language_id = "zh-CN"
text_portion.text = "1。"
paragraph.portions.add(text_portion)
presentation.save("proofing_language.pptx", slides.export.SaveFormat.PPTX)
Ustaw domyślny język
Użyj LoadOptions.default_text_language aby zdefiniować domyślny język dla tekstu tworzonego podczas ładowania lub tworzenia prezentacji.
import aspose.slides as slides
load_options = slides.LoadOptions()
load_options.default_text_language = "en-US"
with slides.Presentation(load_options) as presentation:
slide = presentation.slides[0]
# Dodaj nowy kształt prostokątny z tekstem.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 20, 20, 150, 50)
shape.text_frame.text = "Sample text"
# Sprawdź język pierwszego fragmentu.
portion = shape.text_frame.paragraphs[0].portions[0]
print(portion.portion_format.language_id)
Ustaw domyślny styl tekstu
Aby zastosować domyślne formatowanie tekstu na poziomie prezentacji, użyj Presentation.default_text_style.
Poniższy przykład kodu pokazuje, jak ustawić domyślną pogrubioną czcionkę o rozmiarze 14 pkt dla całego tekstu we wszystkich slajdach nowej prezentacji.
import aspose.slides as slides
with slides.Presentation() as presentation:
# Pobierz format akapitu najwyższego poziomu.
paragraph_format = presentation.default_text_style.get_level(0)
if paragraph_format is not None:
paragraph_format.default_portion_format.font_height = 14
paragraph_format.default_portion_format.font_bold = slides.NullableBool.TRUE
presentation.save("default_text_style.pptx", slides.export.SaveFormat.PPTX)
Wyodrębnij tekst z efektem wielkich liter
W PowerPoint stosowanie efektu All Caps powoduje, że tekst wyświetlany jest wielkimi literami na slajdzie, nawet jeśli pierwotnie został wpisany małymi literami. Gdy pobierasz taki fragment tekstu przy użyciu Aspose.Slides, biblioteka zwraca tekst dokładnie tak, jak został wprowadzony. Aby dopasować go do wyświetlanego tekstu, sprawdź TextCapType i w razie wartości ALL przekształć zwrócony łańcuch na wielkie litery.
Załóżmy, że na pierwszym slajdzie pliku sample2.pptx znajduje się następująca ramka tekstowa.

Poniższy przykład kodu pokazuje, jak wyodrębnić tekst z zastosowanym efektem All Caps:
import aspose.slides as slides
with slides.Presentation("sample2.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
text_portion = auto_shape.text_frame.paragraphs[0].portions[0]
print("Original text:", text_portion.text)
text_format = text_portion.portion_format.get_effective()
if text_format.text_cap_type == slides.TextCapType.ALL:
text = text_portion.text.upper()
print("All-Caps effect:", text)
Wyjście:
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
FAQ
Jak modyfikować tekst w tabeli na slajdzie?
Aby zmodyfikować tekst w tabeli na slajdzie, użyj Table. Przeglądaj komórki i aktualizuj każdą komórkę poprzez Cell.text_frame oraz formatowanie akapitu przez Paragraph.paragraph_format.
Jak zastosować gradientowy kolor do tekstu w slajdzie PowerPoint?
Aby zastosować gradientowy kolor do tekstu, użyj PortionFormat.fill_format. Ustaw FillFormat.fill_type na FillType.GRADIENT i skonfiguruj przystanki gradientu, kierunek oraz przezroczystość.