Cómo dar formato al texto en Python
Aspose.Slides FOSS for Python provides fine-grained text formatting through the PortionFormat clase. A Portion es la unidad independiente más pequeña de texto; se corresponde con una única ejecución de formato dentro de un párrafo. Esta guía muestra cómo aplicar formato en negrita, cursiva, tamaño de fuente y color al texto en una presentación.
Guía paso a paso
Paso 1: Instalar el paquete
pip install aspose-slides-fossPaso 2: Añadir una forma con un marco de texto
Antes de formatear texto, una forma debe contener un TextFrame. Utilice shape.add_text_frame() para crear una.
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)Paso 3: Acceder al TextFrame
shape.add_text_frame() devuelve el TextFrame objeto. También puedes recuperarlo más tarde mediante shape.text_frame.
tf = shape.text_frame # if the frame already exists
tf = shape.add_text_frame("") # creates a new frameUna TextFrame contiene una lista de Paragraph objetos (tf.paragraphs). Cada Paragraph contiene Portion objetos (paragraph.portions).
Paso 4: Aplicar formato de negrita y cursiva
Usar portion_format.font_bold y portion_format.font_italic. Estas propiedades aceptan NullableBool.TRUE, NullableBool.FALSE, o NullableBool.NOT_DEFINED (heredar del maestro).
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)Paso 5: Establecer tamaño y color de la fuente
Establecer portion_format.font_height para el tamaño (en puntos) y usar fill_format para color.
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) acepta valores 0–255 para cada canal.
Paso 6: Múltiples Porciones en un mismo párrafo
Un solo párrafo puede contener múltiples porciones con diferente formato. Añade un nuevo Portion a la colección del párrafo portions colección:
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)Problemas comunes y soluciones
El texto aparece negro incluso después de establecer el color
Asegúrate fill_format.fill_type = FillType.SOLID está configurado antes de asignar el color. Sin establecer el tipo de relleno, el cambio de color puede no tener efecto.
NullableBool.TRUE vs True
portion_format.font_bold espera NullableBool.TRUE, no el Python True. Asignando Python True puede generar un TypeError o no hacer nada silenciosamente dependiendo del enlace.
La fuente no aparece en el archivo guardado
El latin_font La propiedad establece la familia de fuentes Latin. Si no se establece, se utiliza la fuente del tema de la presentación. Las fuentes personalizadas deben estar incrustadas o disponibles en la máquina de visualización.
Preguntas frecuentes
¿Cómo cambio la familia de fuentes?
Establecer portion_format.latin_font:
fmt.latin_font = slides.FontData("Arial")FontData acepta el nombre de la familia de fuentes como una cadena.
¿Cómo configuro la alineación del párrafo?
Usar paragraph_format.alignment:
from aspose.slides_foss import TextAlignment
tf.paragraphs[0].paragraph_format.alignment = TextAlignment.CENTERValores admitidos: LEFT, CENTER, RIGHT, JUSTIFY.
¿Cómo configuro el interlineado?
Usar paragraph_format.space_before (puntos antes del párrafo) o paragraph_format.space_after (puntos después del párrafo):
tf.paragraphs[0].paragraph_format.space_before = 12 # 12pt before
tf.paragraphs[0].paragraph_format.space_after = 6 # 6pt after