Formátování textu prezentace v Pythonu
Přehled
Tento článek ukazuje, jak formátovat text v prezentacích PowerPoint a OpenDocument pomocí Aspose.Slides pro Python přes .NET. Pokrývá barvy pozadí, průhlednost, mezery mezi znaky, vlastnosti písma, rotaci, mezery odstavců, chování automatického přizpůsobení, ukotvení textu, tabulátory a nastavení jazyka.
V níže uvedených příkladech použijeme soubor nazvaný “sample.pptx”, který obsahuje jediný textový rámeček na první snímku s následujícím textem:

Pro vyhledání a zvýraznění doslovného textu nebo shod regulárních výrazů viz Vyhledat a nahradit text.
Nastavit barvu pozadí textu
Pomocí ParagraphFormat.default_portion_format nastavíte výchozí barvu zvýraznění pro odstavec, nebo použijte PortionFormat.highlight_color pro jednotlivé části textu.
Následující ukázka kódu ukazuje, jak nastavit barvu pozadí pro celý odstavec:
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]
# Nastavte barvu zvýraznění pro celý odstavec.
paragraph.paragraph_format.default_portion_format.highlight_color.color = draw.Color.light_gray
presentation.save("gray_paragraph.pptx", slides.export.SaveFormat.PPTX)
Výsledek:

Níže uvedená ukázka kódu demonstruje, jak nastavit barvu pozadí pro části textu s tučným písmem:
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:
# Nastavte barvu zvýraznění pro část textu.
portion.portion_format.highlight_color.color = draw.Color.light_gray
presentation.save("gray_text_portions.pptx", slides.export.SaveFormat.PPTX)
Výsledek:

Zarovnat textové odstavce
Pomocí ParagraphFormat.alignment nastavíte zarovnání odstavce v textovém rámečku. Hodnota může být centrovaná, zarovnaná vlevo, vpravo, zarovnaná do bloku a podobně.
Následující ukázka kódu ukazuje, jak zarovnat odstavec na střed:
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]
# Nastavte zarovnání odstavce na střed.
paragraph.paragraph_format.alignment = slides.TextAlignment.CENTER
presentation.save("aligned_paragraph.pptx", slides.export.SaveFormat.PPTX)
Výsledek:

Nastavit průhlednost textu
Průhlednost textu se řídí alfa komponentou barvy přiřazené k PortionFormat.fill_format. V níže uvedených příkladech je alpha = 50 hodnota alfa kanálu ARGB v rozsahu 0‑255, nikoli procento průhlednosti.
Ukázka kódu níže ukazuje, jak aplikovat průhlednost na celý odstavec:
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]
# Nastavte výplňovou barvu textu na průhlednou barvu.
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)
Výsledek:

Následující ukázka kódu ukazuje, jak aplikovat průhlednost na části textu s tučným písmem:
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:
# Nastavte průhlednost části textu.
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)
Výsledek:

Nastavit mezery mezi znaky v textu
Pomocí BasePortionFormat.spacing rozšíříte nebo zmenšíte mezery mezi znaky v textovém rámečku.
Následující Python kód ukazuje, jak rozšířit mezery mezi znaky v celém odstavci:
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]
# Poznámka: Použijte záporné hodnoty ke zmenšení mezery mezi znaky.
paragraph.paragraph_format.default_portion_format.spacing = 3 # Zvětšit mezeru mezi znaky.
presentation.save("character_spacing_in_paragraph.pptx", slides.export.SaveFormat.PPTX)
Výsledek:

Ukázka kódu níže ukazuje, jak rozšířit mezery mezi znaky v částech textu s tučným písmem:
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:
# Poznámka: Použijte záporné hodnoty ke zmenšení mezery mezi znaky.
portion.portion_format.spacing = 3 # Zvětšit mezeru mezi znaky.
presentation.save("character_spacing_in_text_portions.pptx", slides.export.SaveFormat.PPTX)
Výsledek:

Zakázat kerningu pro konkrétní písma
V některých případech může text vykreslený pomocí Aspose.Slides vypadat mírně těsněji než stejný text zobrazený v PowerPointu. K tomu může dojít, protože PowerPoint může ignorovat data kerningu pro určitá písma, i když písmo obsahuje platné informace o kerningu a kerning je v nastavení PowerPointu povolen.
Aby byl výstup rendering blíže PowerPointu, můžete v takových případech zakázat kerning pro části textu, které používají dotčené písmo. Nastavte BasePortionFormat.kerning_minimal_size na hodnotu podstatně větší než skutečná velikost písma:
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)
Spravovat vlastnosti písma textu
Vlastnosti písma lze nastavit na úrovni odstavce pomocí ParagraphFormat.default_portion_format nebo na jednotlivých částech pomocí PortionFormat.
Následující kód nastavuje písmo a styl textu pro celý odstavec: použije velikost písma, tučné, kurzívu, tečkované podtržení a písmo Times New Roman na všechny části odstavce.
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]
# Nastavte vlastnosti písma pro odstavec.
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)
Výsledek:

Ukázka kódu níže aplikuje podobné vlastnosti na části textu s tučným písmem:
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:
# Nastavte vlastnosti písma pro část textu.
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)
Výsledek:

Nastavit rotaci textu
Pomocí TextFrameFormat.text_vertical_type nastavíte předdefinovanou orientaci textu uvnitř tvaru.
Následující ukázka kódu nastaví orientaci textu ve tvaru na VERTICAL270, což otáčí text o 90 stupňů proti směru hodinových ručiček:
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)
Výsledek:

Nastavit vlastní rotaci textových rámců
Pomocí TextFrameFormat.rotation_angle nastavíte vlastní úhel rotace pro TextFrame.
Ukázka kódu níže otáčí textový rámec o 3 stupně po směru hodinových ručiček uvnitř tvaru:
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)
Výsledek:

Nastavit řádkování odstavců
Aspose.Slides poskytuje ParagraphFormat.space_after, ParagraphFormat.space_before a ParagraphFormat.space_within k řízení mezer odstavců. Tyto vlastnosti se používají následovně:
- Použijte kladnou hodnotu k určení řádkování jako procento výšky řádku.
- Použijte zápornou hodnotu k určení řádkování v bodech.
Následující ukázka kódu ukazuje, jak specifikovat řádkování v odstavci:
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)
Výsledek:

Nastavit typ automatického přizpůsobení pro textové rámce
TextFrameFormat.autofit_type určuje, jak se text chová, když přesáhne hranice svého kontejneru. Použijte jej ke kontrole, zda se text zmenší, přeteče nebo tvar automaticky změní velikost.
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)
Nastavit ukotvení textových rámců
TextFrameFormat.anchoring_type určuje, jak je text vertikálně umístěn uvnitř tvaru, např. nahoře, uprostřed nebo dole.
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)
Nastavit tabulaci textu
Pomocí ParagraphFormat.default_tab_size a ParagraphFormat.tabs nakonfigurujete tabulátory v odstavci.
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)
Výsledek:

Nastavit jazyk kontroly pravopisu
Aspose.Slides poskytuje PortionFormat.language_id, což vám umožní nastavit jazyk kontroly pravopisu pro část textu. Jazyk kontroly určuje jazyk použitý pro kontrolu pravopisu a gramatiky v PowerPointu.
Následující ukázka kódu ukazuje, jak nastavit jazyk kontroly pravopisu pro část textu:
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
# Nastavte Id jazykové kontroly pravopisu.
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)
Nastavit výchozí jazyk
Použijte LoadOptions.default_text_language k definování výchozího jazyka pro text vytvořený při načítání nebo vytváření prezentace.
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]
# Přidejte nový obdélníkový tvar s textem.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 20, 20, 150, 50)
shape.text_frame.text = "Sample text"
# Zkontrolujte jazyk první části.
portion = shape.text_frame.paragraphs[0].portions[0]
print(portion.portion_format.language_id)
Nastavit výchozí styl textu
Pro použití výchozího formátování textu na úrovni prezentace použijte Presentation.default_text_style. Následující ukázka kódu ukazuje, jak nastavit výchozí tučné písmo o velikosti 14 pt pro celý text napříč snímky v nové prezentaci.
import aspose.slides as slides
with slides.Presentation() as presentation:
# Získejte formát odstavce nejvyšší úrovně.
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)
Extrahovat text s efektem VELKÁ PÍSMENA
V PowerPointu aplikace efektu All Caps (všechna písmena velká) způsobí, že se text na snímku zobrazuje velkými písmeny, i když byl původně napsán malými. Když takovou část textu načtete pomocí Aspose.Slides, knihovna vrátí text přesně tak, jak byl zadán. Pro shodu s zobrazeným textem zkontrolujte TextCapType a pokud je hodnota ALL, převeďte vrácený řetězec na velká písmena.
Řekněme, že na první snímek souboru sample2.pptx máme následující textový rámeček.

Ukázka kódu níže ukazuje, jak extrahovat text s aplikovaným 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)
Výstup:
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
Často kladené otázky
Jak upravit text v tabulce na snímku?
Pro úpravu textu v tabulce na snímku použijte Table. Projděte buňky a aktualizujte každou buňku pomocí Cell.text_frame a formátování odstavců pomocí Paragraph.paragraph_format.
Jak aplikovat gradientní barvu na text v PowerPoint snímku?
Pro aplikaci gradientní barvy na text použijte PortionFormat.fill_format. Nastavte FillFormat.fill_type na FillType.GRADIENT a nakonfigurujte gradientové zastavení, směr a průhlednost.