Formato del texto de la presentación en .NET
Visión general
Este artículo muestra cómo dar formato al texto en presentaciones de PowerPoint y OpenDocument mediante Aspose.Slides para .NET. Cubre el resaltado, colores de fondo, transparencia, espaciado entre caracteres, propiedades de fuente, rotación, espaciado de párrafos, comportamiento de ajuste automático, anclaje del texto, tabuladores y configuraciones de idioma.
En los ejemplos siguientes, usaremos un archivo llamado “sample.pptx”, que contiene un único cuadro de texto en la primera diapositiva con el siguiente texto:

Resaltar texto
Utilice el método ITextFrame.HighlightText cuando necesite resaltar texto que coincida con una muestra específica dentro de un marco de texto. El método aplica un color de resaltado a los fragmentos de texto coincidentes y puede usarse con TextSearchOptions para controlar cómo se realiza la búsqueda, por ejemplo, para que coincida solo con palabras completas.
El siguiente ejemplo de código resalta todas las apariciones de los caracteres “try” y luego resalta solo la palabra completa “to”.
using (var presentation = new Presentation("sample.pptx"))
{
// Obtener la primera forma de la primera diapositiva.
var shape = (IAutoShape)presentation.Slides[0].Shapes[0];
// Resaltar la palabra "try" en la forma.
shape.TextFrame.HighlightText("try", Color.LightBlue);
var searchOptions = new TextSearchOptions()
{
WholeWordsOnly = true
};
// Resaltar la palabra "to" en la forma.
shape.TextFrame.HighlightText("to", Color.Violet, searchOptions, null);
presentation.Save("highlighted_text.pptx", SaveFormat.Pptx);
}
El resultado:

Resaltar texto usando expresiones regulares
El método ITextFrame.HighlightRegex resalta las coincidencias de texto encontradas mediante una expresión regular. En .NET, esta API está expuesta en ITextFrame.
El siguiente ejemplo de código resalta todas las palabras que contienen siete o más caracteres:
using (var presentation = new Presentation(folderPath + "sample.pptx"))
{
var shape = (IAutoShape)presentation.Slides[0].Shapes[0];
var regex = new Regex(@"\b[^\s]{7,}\b");
// Resaltar todas las palabras con siete o más caracteres.
shape.TextFrame.HighlightRegex(regex, Color.Yellow, null);
presentation.Save(folderPath + "highlighted_text_using_regex.pptx", SaveFormat.Pptx);
}
El resultado:

Establecer color de fondo del texto
Utilice IParagraphFormat.DefaultPortionFormat para establecer el color de resaltado predeterminado para un párrafo, o use IPortionFormat.HighlightColor para porciones de texto individuales.
El siguiente ejemplo de código muestra cómo establecer el color de fondo para el párrafo completo:
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Establecer el color de resaltado para todo el párrafo.
paragraph.ParagraphFormat.DefaultPortionFormat.HighlightColor.Color = Color.LightGray;
presentation.Save("gray_paragraph.pptx", SaveFormat.Pptx);
}
El resultado:

El ejemplo de código a continuación muestra cómo establecer el color de fondo para porciones de texto con fuente en negrita:
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Establecer el color de resaltado para la porción de texto.
portion.PortionFormat.HighlightColor.Color = Color.LightGray;
}
}
presentation.Save("gray_text_portions.pptx", SaveFormat.Pptx);
}
El resultado:

Alinear párrafos de texto
Utilice IParagraphFormat.Alignment para establecer la alineación del párrafo dentro de un marco de texto. El valor puede ser centrado, alineado a la izquierda, alineado a la derecha, justificado, etc.
El siguiente ejemplo de código muestra cómo alinear el párrafo al centro:
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Establecer la alineación del párrafo al centro.
paragraph.ParagraphFormat.Alignment = TextAlignment.Center;
presentation.Save("aligned_paragraph.pptx", SaveFormat.Pptx);
}
El resultado:

Establecer transparencia para el texto
La transparencia del texto se controla mediante el componente alfa del color asignado a IPortionFormat.FillFormat. En los ejemplos siguientes, alpha = 50 es un valor del canal alfa ARGB en la escala 0–255, no un porcentaje de transparencia.
El siguiente ejemplo de código muestra cómo aplicar transparencia al párrafo completo:
int alpha = 50;
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Establecer el color de relleno del texto a color transparente.
paragraph.ParagraphFormat.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
paragraph.ParagraphFormat.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(alpha, Color.Black);
presentation.Save("transparent_paragraph.pptx", SaveFormat.Pptx);
}
El resultado:

El siguiente ejemplo de código muestra cómo aplicar transparencia a porciones de texto con fuente en negrita:
int alpha = 50;
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Establecer la transparencia de la porción de texto.
portion.PortionFormat.FillFormat.FillType = FillType.Solid;
portion.PortionFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(alpha, Color.Black);
}
}
presentation.Save("transparent_text_portions.pptx", SaveFormat.Pptx);
}
El resultado:

Establecer espaciado de caracteres para el texto
Utilice IBasePortionFormat.Spacing para ampliar o reducir el espaciado entre caracteres en un cuadro de texto.
El siguiente código C# muestra cómo ampliar el espaciado de caracteres en el párrafo completo:
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Nota: Use valores negativos para comprimir el espaciado de caracteres.
paragraph.ParagraphFormat.DefaultPortionFormat.Spacing = 3; // Expandir el espaciado de caracteres.
presentation.Save("character_spacing_in_paragraph.pptx", SaveFormat.Pptx);
}
El resultado:

El siguiente ejemplo de código muestra cómo ampliar el espaciado de caracteres en porciones de texto con fuente en negrita:
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Nota: Use valores negativos para comprimir el espaciado de caracteres.
portion.PortionFormat.Spacing = 3; // Expandir el espaciado de caracteres.
}
}
presentation.Save("character_spacing_in_text_portions.pptx", SaveFormat.Pptx);
}
El resultado:

Desactivar el interletraje para fuentes específicas
En algunos casos, el texto renderizado por Aspose.Slides puede parecer ligeramente más apretado que el mismo texto mostrado en PowerPoint. Esto puede ocurrir porque PowerPoint puede ignorar los datos de interletraje para ciertas fuentes, incluso cuando la fuente contiene información de interletraje válida y el interletraje está habilitado en la configuración de PowerPoint.
Para que la salida renderizada se acerque más a PowerPoint en esos casos, puede desactivar el interletraje para las porciones de texto que usan la fuente afectada. Establezca IPortionFormat.KerningMinimalSize a un valor significativamente mayor que el tamaño real de la fuente:
using (var presentation = new Presentation("presentation.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var targetFont = "Roboto";
foreach (var paragraph in autoShape.TextFrame.Paragraphs)
{
foreach (var portion in paragraph.Portions)
{
if ((portion.PortionFormat.LatinFont != null &&
portion.PortionFormat.LatinFont.FontName == targetFont) ||
(portion.PortionFormat.EastAsianFont != null &&
portion.PortionFormat.EastAsianFont.FontName == targetFont) ||
(portion.PortionFormat.ComplexScriptFont != null &&
portion.PortionFormat.ComplexScriptFont.FontName == targetFont))
{
portion.PortionFormat.KerningMinimalSize = 100;
}
}
}
presentation.Save("output.pptx", SaveFormat.Pptx);
}
Esta configuración evita que se aplique interletraje a las porciones de texto coincidentes y puede ayudar a alinear la renderización de Aspose.Slides con la salida visual de PowerPoint para fuentes afectadas por este comportamiento específico de PowerPoint.
Administrar propiedades de fuente del texto
Las propiedades de fuente pueden configurarse a nivel de párrafo mediante IParagraphFormat.DefaultPortionFormat o en porciones individuales mediante IPortionFormat.
El siguiente código establece la fuente y el estilo de texto para el párrafo completo: aplica el tamaño de fuente, negrita, cursiva, subrayado punteado y la fuente Times New Roman a todas las porciones del párrafo.
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Establecer las propiedades de fuente del párrafo.
paragraph.ParagraphFormat.DefaultPortionFormat.FontHeight = 12;
paragraph.ParagraphFormat.DefaultPortionFormat.FontBold = NullableBool.True;
paragraph.ParagraphFormat.DefaultPortionFormat.FontItalic = NullableBool.True;
paragraph.ParagraphFormat.DefaultPortionFormat.FontUnderline = TextUnderlineType.Dotted;
paragraph.ParagraphFormat.DefaultPortionFormat.LatinFont = new FontData("Times New Roman");
presentation.Save("font_properties_for_paragraph.pptx", SaveFormat.Pptx);
}
El resultado:

El siguiente ejemplo de código aplica propiedades similares a porciones de texto con fuente en negrita:
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Establecer las propiedades de fuente para la porción de texto.
portion.PortionFormat.FontHeight = 13;
portion.PortionFormat.FontItalic = NullableBool.True;
portion.PortionFormat.FontUnderline = TextUnderlineType.Dotted;
portion.PortionFormat.LatinFont = new FontData("Times New Roman");
}
}
presentation.Save("font_properties_for_text_portions.pptx", SaveFormat.Pptx);
}
El resultado:

Establecer rotación del texto
Utilice ITextFrameFormat.TextVerticalType para establecer una orientación de texto predefinida dentro de una forma.
El siguiente ejemplo de código establece la orientación del texto en la forma a Vertical270, lo que rota el texto 90 grados en sentido antihorario:
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
autoShape.TextFrame.TextFrameFormat.TextVerticalType = TextVerticalType.Vertical270;
presentation.Save("text_rotation.pptx", SaveFormat.Pptx);
}
El resultado:

Establecer rotación personalizada para marcos de texto
Utilice ITextFrameFormat.RotationAngle para establecer un ángulo de rotación personalizado para un ITextFrame.
El siguiente ejemplo de código rota el marco de texto 3 grados en sentido horario dentro de la forma:
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
autoShape.TextFrame.TextFrameFormat.RotationAngle = 3;
presentation.Save("custom_text_rotation.pptx", SaveFormat.Pptx);
}
El resultado:

Establecer espaciado entre líneas de los párrafos
Aspose.Slides ofrece IParagraphFormat.SpaceAfter, IParagraphFormat.SpaceBefore y IParagraphFormat.SpaceWithin para controlar el espaciado de los párrafos. Estas propiedades se usan de la siguiente manera:
- Utilice un valor positivo para especificar el espaciado entre líneas como un porcentaje de la altura de la línea.
- Utilice un valor negativo para especificar el espaciado entre líneas en puntos.
El siguiente ejemplo de código muestra cómo especificar el espaciado entre líneas dentro del párrafo:
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
paragraph.ParagraphFormat.SpaceWithin = 200;
presentation.Save("line_spacing.pptx", SaveFormat.Pptx);
}
El resultado:

Establecer tipo de ajuste automático para marcos de texto
ITextFrameFormat.AutofitType determina cómo se comporta el texto cuando supera los límites de su contenedor. Úselo para controlar si el texto se reduce, desborda o redimensiona la forma automáticamente.
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
autoShape.TextFrame.TextFrameFormat.AutofitType = TextAutofitType.Shape;
presentation.Save("autofit_type.pptx", SaveFormat.Pptx);
}
Establecer ancla de los marcos de texto
ITextFrameFormat.AnchoringType define cómo se posiciona verticalmente el texto dentro de una forma, por ejemplo en la parte superior, media o inferior.
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
autoShape.TextFrame.TextFrameFormat.AnchoringType = TextAnchorType.Bottom;
presentation.Save("text_anchor.pptx", SaveFormat.Pptx);
}
Establecer tabulación del texto
Utilice IParagraphFormat.DefaultTabSize y IParagraphFormat.Tabs para configurar los tabuladores en un párrafo.
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
paragraph.ParagraphFormat.DefaultTabSize = 100;
paragraph.ParagraphFormat.Tabs.Add(30, TabAlignment.Left);
presentation.Save("paragraph_tabs.pptx", SaveFormat.Pptx);
}
El resultado:

Establecer idioma de corrección
Aspose.Slides proporciona IPortionFormat.LanguageId, que permite establecer el idioma de corrección para una porción de texto. El idioma de corrección determina el idioma utilizado para la revisión ortográfica y gramatical en PowerPoint.
El siguiente ejemplo de código muestra cómo establecer el idioma de corrección para una porción de texto:
using (var presentation = new Presentation("presentation.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
paragraph.Portions.Clear();
var font = new FontData("SimSun");
var textPortion = new Portion();
textPortion.PortionFormat.ComplexScriptFont = font;
textPortion.PortionFormat.EastAsianFont = font;
textPortion.PortionFormat.LatinFont = font;
// Establecer el Id de un idioma de corrección.
textPortion.PortionFormat.LanguageId = "zh-CN";
textPortion.Text = "1。";
paragraph.Portions.Add(textPortion);
presentation.Save("proofing_language.pptx", SaveFormat.Pptx);
}
Establecer idioma predeterminado
Utilice LoadOptions.DefaultTextLanguage para definir el idioma predeterminado para el texto creado al cargar o crear una presentación.
var loadOptions = new LoadOptions();
loadOptions.DefaultTextLanguage = "en-US";
using (var presentation = new Presentation(loadOptions))
{
var slide = presentation.Slides[0];
// Agregar una nueva forma rectangular con texto.
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 50);
shape.TextFrame.Text = "Sample text";
// Comprobar el idioma de la primera porción.
var portion = shape.TextFrame.Paragraphs[0].Portions[0];
Console.WriteLine(portion.PortionFormat.LanguageId);
}
Establecer estilo de texto predeterminado
Para aplicar el formato de texto predeterminado a nivel de presentación, utilice IPresentation.DefaultTextStyle.
El siguiente ejemplo de código muestra cómo establecer una fuente predeterminada en negrita con un tamaño de 14 pt para todo el texto en todas las diapositivas de una nueva presentación.
using (var presentation = new Presentation())
{
// Obtener el formato de párrafo de nivel superior.
var paragraphFormat = presentation.DefaultTextStyle.GetLevel(0);
if (paragraphFormat != null)
{
paragraphFormat.DefaultPortionFormat.FontHeight = 14;
paragraphFormat.DefaultPortionFormat.FontBold = NullableBool.True;
}
presentation.Save("default_text_style.pptx", SaveFormat.Pptx);
}
Extraer texto con el efecto de mayúsculas
En PowerPoint, aplicar el efecto de fuente All Caps hace que el texto aparezca en mayúsculas en la diapositiva aunque inicialmente se haya escrito en minúsculas. Cuando recupera dicha porción de texto con Aspose.Slides, la biblioteca devuelve el texto tal como se ingresó. Para que coincida con el texto mostrado, compruebe TextCapType y convierta la cadena devuelta a mayúsculas cuando el valor sea All.
Supongamos que tenemos el siguiente cuadro de texto en la primera diapositiva del archivo sample2.pptx.

El siguiente ejemplo de código muestra cómo extraer el texto con el efecto All Caps aplicado:
using (var presentation = new Presentation("sample2.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var textPortion = autoShape.TextFrame.Paragraphs[0].Portions[0];
Console.WriteLine($"Original text: {textPortion.Text}");
var textFormat = textPortion.PortionFormat.GetEffective();
if (textFormat.TextCapType == TextCapType.All)
{
var text = textPortion.Text.ToUpper();
Console.WriteLine($"All-Caps effect: {text}");
}
}
Salida:
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
Preguntas frecuentes
¿Cómo modificar texto en una tabla de una diapositiva?
Para modificar texto en una tabla de una diapositiva, utilice ITable. Recorra las celdas y actualice cada celda mediante ICell.TextFrame y el formato de párrafo mediante IParagraph.ParagraphFormat.
¿Cómo aplicar un color degradado al texto en una diapositiva de PowerPoint?
Para aplicar un color degradado al texto, use IPortionFormat.FillFormat. Establezca IFillFormat.FillType a FillType.Gradient y configure las paradas del degradado, la dirección y la transparencia.