Formatar Texto da Apresentação em .NET
Visão geral
Este artigo mostra como formatar texto em apresentações PowerPoint e OpenDocument usando Aspose.Slides para .NET. Ele cobre cores de fundo, transparência, espaçamento entre caracteres, propriedades de fonte, rotação, espaçamento de parágrafo, comportamento de ajuste automático, ancoragem de texto, tabulações e configurações de idioma.
Nos exemplos abaixo, usaremos um arquivo chamado “sample.pptx”, que contém uma única caixa de texto no primeiro slide com o seguinte texto:

Para localizar e realçar texto literal ou correspondências de expressão regular, veja Pesquisar e Substituir Texto.
Definir cor de fundo do texto
Use IParagraphFormat.DefaultPortionFormat para definir a cor de destaque padrão para um parágrafo, ou use IBasePortionFormat.HighlightColor para porções de texto individuais.
O exemplo de código a seguir mostra como definir a cor de fundo para o parágrafo inteiro:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Defina a cor de destaque para todo o parágrafo.
paragraph.ParagraphFormat.DefaultPortionFormat.HighlightColor.Color = Color.LightGray;
presentation.Save("gray_paragraph.pptx", SaveFormat.Pptx);
}
O resultado:

O exemplo de código abaixo demonstra como definir a cor de fundo para porções de texto com fonte negrito:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
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)
{
// Defina a cor de destaque para a porção de texto.
portion.PortionFormat.HighlightColor.Color = Color.LightGray;
}
}
presentation.Save("gray_text_portions.pptx", SaveFormat.Pptx);
}
O resultado:

Alinhar parágrafos de texto
Use IParagraphFormat.Alignment para definir o alinhamento do parágrafo dentro de uma moldura de texto. O valor pode ser centralizado, alinhado à esquerda, à direita, justificado etc.
O exemplo de código a seguir mostra como alinhar o parágrafo ao centro:
using Aspose.Slides;
using Aspose.Slides.Export;
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Defina o alinhamento do parágrafo para o centro.
paragraph.ParagraphFormat.Alignment = TextAlignment.Center;
presentation.Save("aligned_paragraph.pptx", SaveFormat.Pptx);
}
O resultado:

Definir transparência para texto
A transparência do texto é controlada através do componente alfa da cor atribuída a IBasePortionFormat.FillFormat. Nos exemplos abaixo, alpha = 50 é um valor de canal alfa ARGB na escala 0–255, não uma porcentagem de transparência.
O exemplo de código abaixo mostra como aplicar transparência ao parágrafo inteiro:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
int alpha = 50;
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Defina a cor de preenchimento do texto para cor 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);
}
O resultado:

O exemplo de código abaixo mostra como aplicar transparência a porções de texto com fonte negrito:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
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)
{
// Defina a transparência da porção 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);
}
O resultado:

Definir espaçamento entre caracteres para texto
Use IBasePortionFormat.Spacing para expandir ou condensar o espaçamento entre caracteres em uma caixa de texto.
O código C# a seguir mostra como expandir o espaçamento entre caracteres no parágrafo inteiro:
using Aspose.Slides;
using Aspose.Slides.Export;
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 o espaçamento entre caracteres.
paragraph.ParagraphFormat.DefaultPortionFormat.Spacing = 3; // Expandir espaçamento entre caracteres.
presentation.Save("character_spacing_in_paragraph.pptx", SaveFormat.Pptx);
}
O resultado:

O exemplo de código abaixo mostra como expandir o espaçamento entre caracteres em porções de texto com fonte negrito:
using Aspose.Slides;
using Aspose.Slides.Export;
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 o espaçamento entre caracteres.
portion.PortionFormat.Spacing = 3; // Expandir espaçamento entre caracteres.
}
}
presentation.Save("character_spacing_in_text_portions.pptx", SaveFormat.Pptx);
}
O resultado:

Desativar kerning para fontes específicas
Em alguns casos, o texto renderizado por Aspose.Slides pode parecer ligeiramente mais apertado que o mesmo texto exibido no PowerPoint. Isso pode acontecer porque o PowerPoint pode ignorar os dados de kerning para certas fontes, mesmo quando a fonte contém informações de kerning válidas e o kerning está habilitado nas configurações do PowerPoint.
Para que a saída renderizada fique mais próxima do PowerPoint nesses casos, você pode desativar o kerning para as porções de texto que usam a fonte afetada. Defina IBasePortionFormat.KerningMinimalSize para um valor significativamente maior que o tamanho real da fonte:
using Aspose.Slides;
using Aspose.Slides.Export;
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);
}
Essa configuração impede que o kerning seja aplicado às porções de texto correspondentes e pode ajudar a alinhar a renderização do Aspose.Slides com a saída visual do PowerPoint para fontes afetadas por esse comportamento específico do PowerPoint.
Gerenciar propriedades de fonte do texto
As propriedades de fonte podem ser definidas no nível do parágrafo através de IParagraphFormat.DefaultPortionFormat ou em porções individuais através de IPortionFormat.
O código a seguir define a fonte e o estilo de texto para todo o parágrafo: ele aplica tamanho da fonte, negrito, itálico, sublinhado pontilhado e a fonte Times New Roman a todas as porções do parágrafo.
using Aspose.Slides;
using Aspose.Slides.Export;
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Defina as propriedades da fonte para o parágrafo.
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);
}
O resultado:

O exemplo de código abaixo aplica propriedades semelhantes a porções de texto com fonte negrito:
using Aspose.Slides;
using Aspose.Slides.Export;
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)
{
// Defina as propriedades da fonte para a porção 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);
}
O resultado:

Definir rotação do texto
Use ITextFrameFormat.TextVerticalType para definir uma orientação de texto predefinida dentro de uma forma.
O exemplo de código a seguir define a orientação do texto na forma para Vertical270, que gira o texto 90 graus no sentido anti‑horário:
using Aspose.Slides;
using Aspose.Slides.Export;
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);
}
O resultado:

Definir rotação personalizada para quadros de texto
Use ITextFrameFormat.RotationAngle para definir um ângulo de rotação personalizado para um ITextFrame.
O exemplo de código abaixo gira o quadro de texto em 3 graus no sentido horário dentro da forma:
using Aspose.Slides;
using Aspose.Slides.Export;
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);
}
O resultado:

Definir espaçamento entre linhas de parágrafos
Aspose.Slides fornece IParagraphFormat.SpaceAfter, IParagraphFormat.SpaceBefore e IParagraphFormat.SpaceWithin para controlar o espaçamento dos parágrafos. Essas propriedades são usadas da seguinte forma:
- Use um valor positivo para especificar o espaçamento entre linhas como uma porcentagem da altura da linha.
- Use um valor negativo para especificar o espaçamento entre linhas em pontos.
O exemplo de código a seguir mostra como especificar o espaçamento entre linhas dentro do parágrafo:
using Aspose.Slides;
using Aspose.Slides.Export;
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);
}
O resultado:

Definir tipo de ajuste automático para quadros de texto
ITextFrameFormat.AutofitType determina como o texto se comporta quando excede os limites de seu contêiner. Use-o para controlar se o texto diminui, transborda ou redimensiona a forma automaticamente.
using Aspose.Slides;
using Aspose.Slides.Export;
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);
}
Para contar linhas após a quebra automática e ver como a largura do texto ou da forma altera o resultado, veja Contar linhas renderizadas. A contagem de linhas por si só não indica se o texto transborda seu contêiner.
Definir âncora dos quadros de texto
ITextFrameFormat.AnchoringType define como o texto é posicionado verticalmente dentro de uma forma, por exemplo no topo, meio ou parte inferior.
using Aspose.Slides;
using Aspose.Slides.Export;
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);
}
Definir tabulação de texto
Use IParagraphFormat.DefaultTabSize e IParagraphFormat.Tabs para configurar as tabulações em um parágrafo.
using Aspose.Slides;
using Aspose.Slides.Export;
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);
}
O resultado:

Definir idioma de revisão
Aspose.Slides fornece IBasePortionFormat.LanguageId, que permite definir o idioma de revisão para uma porção de texto. O idioma de revisão determina o idioma usado para verificações ortográficas e gramaticais no PowerPoint.
O exemplo de código a seguir mostra como definir o idioma de revisão para uma porção de texto:
using Aspose.Slides;
using Aspose.Slides.Export;
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;
// Defina o Id de um idioma de revisão.
textPortion.PortionFormat.LanguageId = "zh-CN";
textPortion.Text = "1。";
paragraph.Portions.Add(textPortion);
presentation.Save("proofing_language.pptx", SaveFormat.Pptx);
}
Definir idioma padrão
Use LoadOptions.DefaultTextLanguage para definir o idioma padrão para texto criado ao carregar ou criar uma apresentação.
using Aspose.Slides;
var loadOptions = new LoadOptions();
loadOptions.DefaultTextLanguage = "en-US";
using (var presentation = new Presentation(loadOptions))
{
var slide = presentation.Slides[0];
// Adicione uma nova forma retangular com texto.
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 50);
shape.TextFrame.Text = "Sample text";
// Verifique o idioma da primeira porção.
var portion = shape.TextFrame.Paragraphs[0].Portions[0];
Console.WriteLine(portion.PortionFormat.LanguageId);
}
Definir estilo de texto padrão
Para aplicar formatação de texto padrão ao nível da apresentação, use IPresentation.DefaultTextStyle.
O exemplo de código a seguir mostra como definir uma fonte negrito padrão com tamanho de 14 pt para todo o texto em todas as slides de uma nova apresentação.
using Aspose.Slides;
using Aspose.Slides.Export;
using (var presentation = new Presentation())
{
// Obtenha o formato de parágrafo de nível 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);
}
Extrair texto com o efeito tudo em maiúsculas
No PowerPoint, aplicar o efeito de fonte All Caps faz com que o texto apareça em maiúsculas no slide, mesmo que tenha sido digitado originalmente em minúsculas. Quando você recupera essa porção de texto com Aspose.Slides, a biblioteca devolve o texto exatamente como foi inserido. Para corresponder ao texto exibido, verifique TextCapType e converta a string retornada para maiúsculas quando o valor for All.
Vamos supor que temos a seguinte caixa de texto no primeiro slide do arquivo sample2.pptx.

O exemplo de código abaixo mostra como extrair o texto com o efeito All Caps aplicado:
using Aspose.Slides;
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}");
}
}
Saída:
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
FAQ
Como modificar texto em uma tabela em um slide?
Para modificar texto em uma tabela em um slide, use ITable. Percorra as células e atualize cada célula através de ICell.TextFrame e formatação de parágrafo por meio de IParagraph.ParagraphFormat.
Como aplicar cor gradiente ao texto em um slide PowerPoint?
Para aplicar uma cor gradiente ao texto, use IBasePortionFormat.FillFormat. Defina IFillFormat.FillType como FillType.Gradient e configure as paradas de gradiente, a direção e a transparência.