Jak formátovat text v Pythonu

Jak formátovat text v Pythonu

Aspose.Slides FOSS for Python poskytuje jemné formátování textu pomocí třídy PortionFormat. Portion je nejmenší nezávislá jednotka textu; mapuje se na jediný formátovací běh v odstavci. Tento průvodce ukazuje, jak aplikovat tučné, kurzívou, velikost písma a barevné formátování na text v prezentaci.

Průvodce krok za krokem

Krok 1: Nainstalujte balíček

pip install aspose-slides-foss

Krok 2: Přidat tvar s textovým rámečkem

Před formátováním textu musí tvar obsahovat TextFrame. Použijte shape.add_text_frame() k vytvoření jednoho.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 500, 150)
    tf = shape.add_text_frame("Default text: will be formatted")
    prs.save("output.pptx", SaveFormat.PPTX)

Krok 3: Přístup k TextFrame

shape.add_text_frame() vrací objekt TextFrame. Můžete jej také později získat pomocí shape.text_frame.

tf = shape.text_frame          # if the frame already exists
tf = shape.add_text_frame("") # creates a new frame

TextFrame obsahuje seznam Paragraph objektů (tf.paragraphs). Každý Paragraph obsahuje Portion objektů (paragraph.portions).


Krok 4: Použít tučné a kurzívní formátování

Použijte portion_format.font_bold a portion_format.font_italic. Tyto vlastnosti přijímají NullableBool.TRUE, NullableBool.FALSE nebo NullableBool.NOT_DEFINED (zdědit z master).

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 500, 150)
    tf = shape.add_text_frame("Bold and italic text")

    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_bold = NullableBool.TRUE
    fmt.font_italic = NullableBool.TRUE

    prs.save("bold-italic.pptx", SaveFormat.PPTX)

Krok 5: Nastavte velikost písma a barvu

Nastavte portion_format.font_height pro velikost (v bodech) a použijte fill_format pro barvu.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 500, 150)
    tf = shape.add_text_frame("Large corporate-blue heading")

    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_height = 32                          # 32pt font
    fmt.font_bold = NullableBool.TRUE
    fmt.fill_format.fill_type = FillType.SOLID
    fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 70, 127)

    prs.save("colored-text.pptx", SaveFormat.PPTX)

Color.from_argb(alpha, red, green, blue) přijímá hodnoty 0–255 pro každý kanál.


Krok 6: Více částí v jednom odstavci

Jeden odstavec může obsahovat více částí s různým formátováním. Přidejte nový Portion do kolekce portions odstavce:

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 600, 100)
    tf = shape.add_text_frame("")  # start with empty frame

    paragraph = tf.paragraphs[0]

    # First portion: normal text
    portion1 = paragraph.portions[0]
    portion1.text = "Normal text followed by "
    portion1.portion_format.font_height = 20

    # Second portion: bold red text
    portion2 = slides.Portion()
    portion2.text = "bold red text"
    portion2.portion_format.font_height = 20
    portion2.portion_format.font_bold = NullableBool.TRUE
    portion2.portion_format.fill_format.fill_type = FillType.SOLID
    portion2.portion_format.fill_format.solid_fill_color.color = Color.from_argb(255, 200, 0, 0)
    paragraph.portions.add(portion2)

    prs.save("mixed-format.pptx", SaveFormat.PPTX)

Běžné problémy a opravy

Text se zobrazuje černě i po nastavení barvy

Ujistěte se, že je fill_format.fill_type = FillType.SOLID nastaveno před přiřazením barvy. Bez nastavení typu výplně může změna barvy nemít žádný efekt.

NullableBool.TRUE vs True

portion_format.font_bold očekává NullableBool.TRUE, nikoli Python True. Přiřazení Python True může vyvolat TypeError nebo tiše nic neudělat v závislosti na vazbě.

Písmo se v uloženém souboru neobjevuje

Vlastnost latin_font nastavuje latinskou rodinu fontů. Pokud není nastavena, použije se písmo motivu prezentace. Vlastní fonty musí být vloženy nebo dostupné na zobrazovacím počítači.


Často kladené otázky

Jak změním rodinu písma?

Nastavit portion_format.latin_font:

fmt.latin_font = slides.FontData("Arial")

FontData přijímá název rodiny písma jako řetězec.

Jak nastavit zarovnání odstavce?

Použijte paragraph_format.alignment:

from aspose.slides_foss import TextAlignment

tf.paragraphs[0].paragraph_format.alignment = TextAlignment.CENTER

Podporované hodnoty: LEFT, CENTER, RIGHT, JUSTIFY.

Jak nastavit řádkování?

Použijte paragraph_format.space_before (body před odstavcem) nebo paragraph_format.space_after (body po odstavci):

tf.paragraphs[0].paragraph_format.space_before = 12   # 12pt before
tf.paragraphs[0].paragraph_format.space_after = 6     # 6pt after

Viz také

 Čeština