Formattare il testo della presentazione in .NET
Panoramica
Questo articolo mostra come formattare il testo in presentazioni PowerPoint e OpenDocument utilizzando Aspose.Slides per .NET. Copre i colori di sfondo, la trasparenza, la spaziatura dei caratteri, le proprietà dei caratteri, la rotazione, la spaziatura dei paragrafi, il comportamento di adattamento automatico, l’ancoraggio del testo, le tabulazioni e le impostazioni della lingua.
Negli esempi seguenti, utilizzeremo un file denominato “sample.pptx”, che contiene una singola casella di testo nella prima diapositiva con il seguente testo:

Per trovare e evidenziare testo letterale o corrispondenze di espressioni regolari, vedi Cerca e Sostituisci Testo.
Imposta il colore di sfondo del testo
Utilizza IParagraphFormat.DefaultPortionFormat per impostare il colore di evidenziazione predefinito per un paragrafo, oppure utilizza IBasePortionFormat.HighlightColor per singole porzioni di testo.
Il seguente esempio di codice mostra come impostare il colore di sfondo per l'intero paragrafo:
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];
// Imposta il colore di evidenziazione per l'intero paragrafo.
paragraph.ParagraphFormat.DefaultPortionFormat.HighlightColor.Color = Color.LightGray;
presentation.Save("gray_paragraph.pptx", SaveFormat.Pptx);
}
Il risultato:

L’esempio di codice seguente dimostra come impostare il colore di sfondo per le porzioni di testo con un carattere grassetto:
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)
{
// Imposta il colore di evidenziazione per la porzione di testo.
portion.PortionFormat.HighlightColor.Color = Color.LightGray;
}
}
presentation.Save("gray_text_portions.pptx", SaveFormat.Pptx);
}
Il risultato:

Allinea i paragrafi di testo
Utilizza IParagraphFormat.Alignment per impostare l’allineamento del paragrafo all’interno di un riquadro di testo. Il valore può essere centrato, allineato a sinistra, allineato a destra, giustificato, ecc.
Il seguente esempio di codice mostra come allineare il paragrafo al 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];
// Imposta l'allineamento del paragrafo al centro.
paragraph.ParagraphFormat.Alignment = TextAlignment.Center;
presentation.Save("aligned_paragraph.pptx", SaveFormat.Pptx);
}
Il risultato:

Imposta la trasparenza del testo
La trasparenza del testo è controllata tramite il componente alfa del colore assegnato a IBasePortionFormat.FillFormat. Negli esempi seguenti, alpha = 50 è un valore del canale alfa ARGB sulla scala 0–255, non una percentuale di trasparenza.
L’esempio di codice seguente mostra come applicare la trasparenza all'intero paragrafo:
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];
// Imposta il colore di riempimento del testo a colore trasparente.
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);
}
Il risultato:

Il seguente esempio di codice mostra come applicare la trasparenza alle porzioni di testo con un carattere grassetto:
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)
{
// Imposta la trasparenza della porzione di testo.
portion.PortionFormat.FillFormat.FillType = FillType.Solid;
portion.PortionFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(alpha, Color.Black);
}
}
presentation.Save("transparent_text_portions.pptx", SaveFormat.Pptx);
}
Il risultato:

Imposta la spaziatura dei caratteri per il testo
Utilizza IBasePortionFormat.Spacing per espandere o comprimere la spaziatura tra i caratteri in una casella di testo.
Il seguente codice C# mostra come espandere la spaziatura dei caratteri nell'intero paragrafo:
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: usa valori negativi per comprimere la spaziatura dei caratteri.
paragraph.ParagraphFormat.DefaultPortionFormat.Spacing = 3; // Espandi la spaziatura dei caratteri.
presentation.Save("character_spacing_in_paragraph.pptx", SaveFormat.Pptx);
}
Il risultato:

L’esempio di codice seguente mostra come espandere la spaziatura dei caratteri nelle porzioni di testo con un carattere grassetto:
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: usa valori negativi per comprimere la spaziatura dei caratteri.
portion.PortionFormat.Spacing = 3; // Espandi la spaziatura dei caratteri.
}
}
presentation.Save("character_spacing_in_text_portions.pptx", SaveFormat.Pptx);
}
Il risultato:

Disabilita il kerning per caratteri specifici
In alcuni casi, il testo renderizzato da Aspose.Slides può apparire leggermente più stretto rispetto allo stesso testo visualizzato in PowerPoint. Questo può accadere perché PowerPoint potrebbe ignorare i dati di kerning per alcuni caratteri, anche quando il font contiene informazioni di kerning valide e il kerning è abilitato nelle impostazioni di PowerPoint.
Per rendere l’output renderizzato più vicino a PowerPoint in questi casi, è possibile disabilitare il kerning per le porzioni di testo che usano il carattere interessato. Imposta IBasePortionFormat.KerningMinimalSize a un valore significativamente più grande della dimensione reale del carattere:
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);
}
Questa impostazione impedisce l’applicazione del kerning alle porzioni di testo corrispondenti e può aiutare ad allineare il rendering di Aspose.Slides con l’output visivo di PowerPoint per i caratteri influenzati da questo comportamento specifico di PowerPoint.
Gestisci le proprietà dei caratteri del testo
Le proprietà dei caratteri possono essere impostate a livello di paragrafo tramite IParagraphFormat.DefaultPortionFormat o su singole porzioni tramite IPortionFormat.
Il seguente codice imposta il carattere e lo stile del testo per l’intero paragrafo: applica la dimensione del carattere, il grassetto, il corsivo, la sottolineatura punteggiata e il font Times New Roman a tutte le porzioni del paragrafo.
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];
// Imposta le proprietà del carattere per il paragrafo.
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);
}
Il risultato:

L’esempio di codice seguente applica proprietà simili alle porzioni di testo con un carattere grassetto:
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)
{
// Imposta le proprietà del carattere per la porzione di testo.
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);
}
Il risultato:

Imposta la rotazione del testo
Utilizza ITextFrameFormat.TextVerticalType per impostare un’orientazione di testo predefinita all’interno di una forma.
Il seguente esempio di codice imposta l’orientamento del testo nella forma su Vertical270, che ruota il testo di 90 gradi in senso antiorario:
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);
}
Il risultato:

Imposta rotazione personalizzata per i riquadri di testo
Utilizza ITextFrameFormat.RotationAngle per impostare un angolo di rotazione personalizzato per un ITextFrame.
L’esempio di codice seguente ruota il riquadro di testo di 3 gradi in senso orario all’interno della 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);
}
Il risultato:

Imposta l’interlinea dei paragrafi
Aspose.Slides fornisce IParagraphFormat.SpaceAfter, IParagraphFormat.SpaceBefore, e IParagraphFormat.SpaceWithin per controllare la spaziatura dei paragrafi. Queste proprietà si usano come segue:
- Utilizzare un valore positivo per specificare l’interlinea come percentuale dell’altezza della riga.
- Utilizzare un valore negativo per specificare l’interlinea in punti.
Il seguito esempio di codice mostra come specificare l’interlinea all’interno del paragrafo:
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);
}
Il risultato:

Imposta il tipo di adattamento automatico per i riquadri di testo
ITextFrameFormat.AutofitType determina come il testo si comporta quando supera i confini del suo contenitore. Usalo per controllare se il testo si riduce, traborda o ridimensiona automaticamente la 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.AutofitType = TextAutofitType.Shape;
presentation.Save("autofit_type.pptx", SaveFormat.Pptx);
}
Imposta l’ancora dei riquadri di testo
ITextFrameFormat.AnchoringType definisce come il testo è posizionato verticalmente all’interno di una forma, ad esempio in alto, al centro o in basso.
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);
}
Imposta la tabulazione del testo
Utilizza IParagraphFormat.DefaultTabSize e IParagraphFormat.Tabs per configurare le tabulazioni in un paragrafo.
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);
}
Il risultato:

Imposta la lingua di revisione
Aspose.Slides fornisce IBasePortionFormat.LanguageId, che consente di impostare la lingua di revisione per una porzione di testo. La lingua di revisione determina la lingua usata per i controlli ortografici e grammaticali in PowerPoint.
Il seguente esempio di codice mostra come impostare la lingua di revisione per una porzione di testo:
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;
// Imposta l'Id di una lingua di revisione.
textPortion.PortionFormat.LanguageId = "zh-CN";
textPortion.Text = "1。";
paragraph.Portions.Add(textPortion);
presentation.Save("proofing_language.pptx", SaveFormat.Pptx);
}
Imposta la lingua predefinita
Utilizza LoadOptions.DefaultTextLanguage per definire la lingua predefinita per il testo creato durante il caricamento o la creazione di una presentazione.
using Aspose.Slides;
var loadOptions = new LoadOptions();
loadOptions.DefaultTextLanguage = "en-US";
using (var presentation = new Presentation(loadOptions))
{
var slide = presentation.Slides[0];
// Aggiungi una nuova forma rettangolare con testo.
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 50);
shape.TextFrame.Text = "Sample text";
// Verifica la lingua della prima porzione.
var portion = shape.TextFrame.Paragraphs[0].Portions[0];
Console.WriteLine(portion.PortionFormat.LanguageId);
}
Imposta lo stile di testo predefinito
Per applicare la formattazione del testo predefinita a livello di presentazione, utilizza IPresentation.DefaultTextStyle.
Il seguente esempio di codice mostra come impostare un carattere grassetto predefinito con dimensione 14 pt per tutto il testo nelle diapositive di una nuova presentazione.
using Aspose.Slides;
using Aspose.Slides.Export;
using (var presentation = new Presentation())
{
// Ottieni il formato del paragrafo di livello superiore.
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);
}
Estrai il testo con l’effetto Tutto Maiuscolo
In PowerPoint, applicare l’effetto All Caps al carattere fa apparire il testo in maiuscolo sulla diapositiva anche se è stato originariamente digitato in minuscolo. Quando si recupera una tale porzione di testo con Aspose.Slides, la libreria restituisce il testo esattamente come è stato inserito. Per corrispondere al testo visualizzato, controlla TextCapType e converti la stringa restituita in maiuscolo quando il valore è All.
Supponiamo di avere la seguente casella di testo nella prima diapositiva del file sample2.pptx.

L’esempio di codice seguente mostra come estrarre il testo con l’effetto All Caps applicato:
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}");
}
}
Output:
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
FAQ
Come modificare il testo in una tabella su una diapositiva?
Per modificare il testo in una tabella su una diapositiva, utilizza ITable. Itera le celle e aggiorna ciascuna cella tramite ICell.TextFrame e la formattazione dei paragrafi attraverso IParagraph.ParagraphFormat.
Come applicare un colore sfumato al testo in una diapositiva PowerPoint?
Per applicare un colore sfumato al testo, utilizza IBasePortionFormat.FillFormat. Imposta IFillFormat.FillType su FillType.Gradient e configura le fermate del gradiente, la direzione e la trasparenza.