Formatera presentationstext i .NET
Översikt
Den här artikeln visar hur du formaterar text i PowerPoint- och OpenDocument-presentationer med Aspose.Slides för .NET. Den täcker bakgrundsfärger, transparens, teckenavstånd, teckensnittsegenskaper, rotation, styckeavstånd, autofit‑beteende, textankring, tabbstopp och språkinställningar.
Om inte annat anges använder exemplen sample.pptx. Den första formen på den första bilden är en textruta, och dess första stycke innehåller texten som visas nedan. Både bild- och formindex är nollbaserade. Exempel som markerar fetstilta delar använder effektiv formatering, inklusive ärvd fet formatering:

För att hitta och markera exakt text eller reguljära uttryck‑träffar, se Sök och ersätt text.
Ange bakgrundsfärg för text
Använd IParagraphFormat.DefaultPortionFormat för att ange standardmarkeringsfärgen för ett stycke, eller använd IBasePortionFormat.HighlightColor för enskilda textdelar.
Följande exempel anger en ljusgrå markering som standard för det första stycket. Explicita markeringsfärger på enskilda delar har företräde framför denna standard:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Ange markeringsfärgen för hela stycket.
paragraph.ParagraphFormat.DefaultPortionFormat.HighlightColor.Color = Color.LightGray;
presentation.Save("gray_paragraph.pptx", SaveFormat.Pptx);
Resultatet:

Kodexemplet nedan visar hur du anger bakgrundsfärgen för textdelar med fet stil:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// An
Resultatet:

Justera textstycken
Använd IParagraphFormat.Alignment för att ange styckejustering inom en textram. Värdet kan vara centrerat, vänsterjusterat, högerjusterat, justerat osv.
Följande kodexempel visar hur du justerar stycket till centrum:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Ange justeringen av stycket till centrerad.
paragraph.ParagraphFormat.Alignment = TextAlignment.Center;
presentation.Save("aligned_paragraph.pptx", SaveFormat.Pptx);
Resultatet:

Justera teckensnitt inom en rad
Använd IParagraphFormat.FontAlignment för att vertikalt justera textdelar med olika teckensnittsstorlekar inom en rad. Denna inställning gäller hela stycket och styr justeringen inom varje rad.
Följande fristående exempel skapar fyra märkta textrutor på en bild. Varje stycke innehåller samma text i 18, 36 och 54 punkter, med olika teckensnittsjustering. Det använder Arial, inaktiverar autofit och radbrytning, och håller textramarna tillräckligt stora för en enda rad.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var alignments = new[] { FontAlignment.Baseline, FontAlignment.Top, FontAlignment.Center, FontAlignment.Bottom };
var fontSizes = new[] { 18f, 36f, 54f };
for (var i = 0; i < alignments.Length; i++)
{
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 30, 20 + i * 130, 660, 120);
shape.FillFormat.FillType = FillType.NoFill;
shape.LineFormat.FillFormat.FillType = FillType.NoFill;
var textFrame = shape.TextFrame;
textFrame.TextFrameFormat.AnchoringType = TextAnchorType.Top;
textFrame.TextFrameFormat.AutofitType = TextAutofitType.None;
textFrame.TextFrameFormat.WrapText = NullableBool.False;
var label = textFrame.Paragraphs[0];
label.Text = alignments[i].ToString();
label.ParagraphFormat.Alignment = TextAlignment.Left;
label.ParagraphFormat.DefaultPortionFormat.FontHeight = 14;
label.ParagraphFormat.DefaultPortionFormat.LatinFont = new FontData("Arial");
label.ParagraphFormat.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
label.ParagraphFormat.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Gray;
var paragraph = new Paragraph();
paragraph.ParagraphFormat.FontAlignment = alignments[i];
paragraph.ParagraphFormat.Alignment = TextAlignment.Left;
paragraph.ParagraphFormat.DefaultPortionFormat.LatinFont = new FontData("Arial");
paragraph.ParagraphFormat.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
paragraph.ParagraphFormat.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
foreach (var fontSize in fontSizes)
{
var portion = new Portion("Ag ");
portion.PortionFormat.FontHeight = fontSize;
paragraph.Portions.Add(portion);
}
textFrame.Paragraphs.Add(paragraph);
}
presentation.Save("font_alignment.pptx", SaveFormat.Pptx);
Resultatet:

Teckensnittsjustering använder teckenmetrik, så de synliga kanterna på enskilda bokstäver nödvändigtvis inte exakt linjerar. Exemplet inkluderar både en stor bokstav och en nedgående del för att tydligt visa skillnaden mellan grundlinje och bottenjustering. Tillgänglighet och ersättning av teckensnitt, de använda tecknen och skillnaden i teckensnittsstorlekar påverkar resultatet. Ramdimensioner, marginaler, radavstånd, radbrytning och autofit påverkar också layouten; använd samma teckensnitt och layoutinställningar när du jämför lägen.
Denna inställning skiljer sig från IParagraphFormat.Alignment, som styr horisontell styckejustering, och ITextFrameFormat.AnchoringType, som placerar textblocket vertikalt inom sin form. Upphöjda och nedsänkta format via IBasePortionFormat.Escapement flyttar enskilda delar relativt till grundlinjen istället för att sätta teckensnittsjustering för styckets rader.
Ange transparens för text
Texttransparens styrs via alfakomponenten i färgen som tilldelas IBasePortionFormat.FillFormat. I exemplen nedan är alpha = 50 ett ARGB-alphakanalvärde på skalan 0–255, inte en transparensprocent.
Kodexemplet nedan visar hur du applicerar transparens på hela stycket:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
var alpha = 50;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Ange en semitransparent svart fyllning för texten.
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);
Resultatet:

Följande kodexempel visar hur du applicerar transparens på textdelar med fet stil:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
var alpha = 50;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Ange transparensen för textdelen.
portion.PortionFormat.FillFormat.FillType = FillType.Solid;
portion.PortionFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(alpha, Color.Black);
}
}
presentation.Save("transparent_text_portions.pptx", SaveFormat.Pptx);
Resultatet:

Ange teckenavstånd för text
Använd IBasePortionFormat.Spacing för att öka eller minska avståndet mellan tecken i en textruta. Exemplen lägger till 3 punkters avstånd; negativa värden minskar texten.
Följande C#-kod visar hur du ökar teckenavståndet i hela stycket:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Obs: Använd negativa värden för att komprimera teckenavståndet.
paragraph.ParagraphFormat.DefaultPortionFormat.Spacing = 3; // Utöka teckenavståndet.
presentation.Save("character_spacing_in_paragraph.pptx", SaveFormat.Pptx);
Resultatet:

Kodexemplet nedan visar hur du ökar teckenavståndet i textdelar med fet stil:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Obs: Använd negativa värden för att komprimera teckenavståndet.
portion.PortionFormat.Spacing = 3; // Utöka teckenavståndet.
}
}
presentation.Save("character_spacing_in_text_portions.pptx", SaveFormat.Pptx);
Resultatet:

Inaktivera kerning för specifika teckensnitt
I vissa fall kan text som renderas av Aspose.Slides se något tajtare ut än samma text i PowerPoint. Detta kan ske eftersom PowerPoint kan ignorera kerningdata för vissa teckensnitt, även när teckensnittet innehåller giltig kerninginformation och kerning är aktiverat i PowerPoints inställningar.
För att få det renderade resultatet närmare PowerPoint i sådana fall kan du inaktivera kerning för textdelar som använder det påverkade teckensnittet. Sätt IBasePortionFormat.KerningMinimalSize till ett värde som är större än den faktiska teckensnittsstorleken. Detta exempel kräver “presentation.pptx” med en textruta som den första formen på den första bilden. Det kontrollerar effektiva teckensnittsnamn, inklusive ärvda teckensnitt, och sätter ett tröskelvärde på 100 punkter för delar som använder Roboto. Detta inaktiverar kerning för matchande delar med en teckensnittsstorlek under 100 punkter:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("presentation.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var targetFont = "Roboto";
foreach (var paragraph in autoShape.TextFrame.Paragraphs)
{
foreach (var portion in paragraph.Portions)
{
var textFormat = portion.PortionFormat.GetEffective();
var usesTargetFont = textFormat.LatinFont?.FontName == targetFont ||
textFormat.EastAsianFont?.FontName == targetFont ||
textFormat.ComplexScriptFont?.FontName == targetFont;
if (usesTargetFont)
{
portion.PortionFormat.KerningMinimalSize = 100;
}
}
}
presentation.Save("output.pptx", SaveFormat.Pptx);
För matchande text under tröskeln förhindrar denna inställning kerning och kan hjälpa till att anpassa Aspose.Slides rendering till PowerPoints visuella resultat för teckensnitt som påverkas av detta PowerPoint‑specifika beteende.
Hantera teckensnitts egenskaper för text
Teckensnittsegenskaper kan sättas på styckenivå via IParagraphFormat.DefaultPortionFormat eller på enskilda delar via IPortionFormat.
Följande exempel anger första styckets standardteckensnitt till 12‑punkts Times New Roman med fet, kursiv och prickad understrykning. Explicita format på enskilda delar har företräde framför dessa standardinställningar.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Ange teckensnittsegenskaperna för stycket.
var portionFormat = paragraph.ParagraphFormat.DefaultPortionFormat;
portionFormat.FontHeight = 12;
portionFormat.FontBold = NullableBool.True;
portionFormat.FontItalic = NullableBool.True;
portionFormat.FontUnderline = TextUnderlineType.Dotted;
portionFormat.LatinFont = new FontData("Times New Roman");
presentation.Save("font_properties_for_paragraph.pptx", SaveFormat.Pptx);
Resultatet:

Följande exempel applicerar 13‑punkts Times New Roman, kursiv format och prickad understrykning på delar vars effektiva format är fet:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Ange teckensnittsegenskaperna för textdelen.
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);
Resultatet:

Styr normalisering av texthöjd
Använd IBasePortionFormat.NormaliseHeight när du reproducerar malltypografi eller undersöker skillnader i teckenhöjd. I PowerPoint gör aktivering av normalisering att enskilda tecken sträcks eller komprimeras vertikalt för att ge dem en enhetlig synlig höjd inom textdelen. Det garanterar inte lika texthöjder mellan olika teckensnitt.
Ställ in egenskapen till NullableBool.True eller False för att uttryckligen aktivera eller inaktivera normalisering. NullableBool.NotDefined lämnar den lokala inställningen odefinierad så att delen ärver sitt värde, exempelvis från styckets DefaultPortionFormat. Det betyder inte False. Använd IPortionFormat.GetEffective och läs IBasePortionFormatEffectiveData.NormaliseHeight för att få det lösta booleska värdet.
Följande fristående exempel kräver att Arial är installerat. Det skapar två textblock som innehåller samma versaler, gemener, nedgående delar och accentuerade tecken i 54 punkter. Båda styckena aktiverar normalisering som standard. Den övre delen inaktiverar den uttryckligen; den nedre delen ärver den. Ramstorlekar, marginaler och styckeavstånd är identiska, med radbrytning och autofit inaktiverade för att hålla jämförelsen konsekvent. Exemplet skriver ut False: False och NotDefined: True och sparar sedan “text_height_normalization.pptx”.
using System;
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var settings = new[] { NullableBool.False, NullableBool.NotDefined };
for (var i = 0; i < settings.Length; i++)
{
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 30, 60 + i * 200, 660, 150);
shape.FillFormat.FillType = FillType.NoFill;
shape.LineFormat.FillFormat.FillType = FillType.NoFill;
var textFrame = shape.TextFrame;
textFrame.Text = "Hxgjpq ÅÉ 0123";
textFrame.TextFrameFormat.AutofitType = TextAutofitType.None;
textFrame.TextFrameFormat.WrapText = NullableBool.False;
textFrame.TextFrameFormat.AnchoringType = TextAnchorType.Top;
textFrame.TextFrameFormat.MarginTop = 0;
textFrame.TextFrameFormat.MarginLeft = 0;
var paragraph = textFrame.Paragraphs[0];
paragraph.ParagraphFormat.Alignment = TextAlignment.Left;
paragraph.ParagraphFormat.SpaceBefore = 0;
paragraph.ParagraphFormat.SpaceAfter = 0;
paragraph.ParagraphFormat.SpaceWithin = 100;
paragraph.ParagraphFormat.DefaultPortionFormat.NormaliseHeight = NullableBool.True;
var portion = paragraph.Portions[0];
portion.PortionFormat.LatinFont = new FontData("Arial");
portion.PortionFormat.FontHeight = 54;
portion.PortionFormat.FillFormat.FillType = FillType.Solid;
portion.PortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
portion.PortionFormat.NormaliseHeight = settings[i];
Console.WriteLine($"{settings[i]}: {portion.PortionFormat.GetEffective().NormaliseHeight}");
}
presentation.Save("text_height_normalization.pptx", SaveFormat.Pptx);
Jämförelsen nedan exporterades från den sparade presentationen. Den övre raden har normalisering inaktiverad (False); den nedre raden ärver den aktiverade inställningen (NotDefined → True). Ha Arial installerat för att reproducera detta utseende.

Normalisering förändrar teckenhöjd utan att ändra det tilldelade FontHeight, som anger teckensnittsstorleken i punkter. Stycke SpaceWithin styr radavstånd, medan textrams AutofitType styr hur text eller dess behållare anpassas. Dessa inställningar har olika syften och kan påverka den övergripande layouten oberoende. För mer om styckeformatering och arv, se Hantera stycke.
Applicera och ta bort genomstrykning
Använd IBasePortionFormat.StrikethroughType på en textdel för att visa korrigeringar, annullerade termer eller tidigare priser utan att ta bort originaltexten. Sätt den till TextStrikethroughType.Single eller Double för en eller två linjer genom texten.
För att ta bort genomstrykning, tilldela TextStrikethroughType.None. Detta inaktiverar explicit effekten, även om den omgivande formateringen specificerar genomstrykning. Däremot lämnar TextStrikethroughType.NotDefined den lokala inställningen odefinierad, så att delen ärver formateringen, exempelvis från stycket. Det garanterar inte att genomstrykning tas bort. Använd IPortionFormat.GetEffective för att läsa den resulterande formateringen, inklusive ärvda värden.
Följande fristående exempel skapar tre prisjämförelser. Varje stycke har separata delar för etiketten, föregående pris och aktuellt pris, så bara det föregående priset påverkas. Den första raden applicerar och sedan tar bort genomstrykning; de andra raderna behåller enkel respektive dubbel genomstrykning. Att ändra denna egenskap bevarar texten och dess övriga formatering, inklusive det föregående priset i fet stil.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 620, 220);
shape.FillFormat.FillType = FillType.NoFill;
shape.LineFormat.FillFormat.FillType = FillType.NoFill;
shape.TextFrame.Paragraphs.Clear();
var labels = new[] { "None: ", "Single: ", "Double: " };
foreach (var label in labels)
{
var paragraph = new Paragraph();
paragraph.ParagraphFormat.Alignment = TextAlignment.Left;
paragraph.ParagraphFormat.SpaceAfter = 20;
var format = paragraph.ParagraphFormat.DefaultPortionFormat;
format.FontHeight = 28;
format.LatinFont = new FontData("Arial");
format.FillFormat.FillType = FillType.Solid;
format.FillFormat.SolidFillColor.Color = Color.Black;
paragraph.Portions.Add(new Portion(label));
var previousPrice = new Portion("$100");
previousPrice.PortionFormat.FontBold = NullableBool.True;
paragraph.Portions.Add(previousPrice);
paragraph.Portions.Add(new Portion(" → $80"));
shape.TextFrame.Paragraphs.Add(paragraph);
}
var paragraphs = shape.TextFrame.Paragraphs;
// Applicera genomstrykning, och ta sedan bort den explicit från det första föregående priset.
paragraphs[0].Portions[1].PortionFormat.StrikethroughType = TextStrikethroughType.Single;
paragraphs[0].Portions[1].PortionFormat.StrikethroughType = TextStrikethroughType.None;
paragraphs[1].Portions[1].PortionFormat.StrikethroughType = TextStrikethroughType.Single;
paragraphs[2].Portions[1].PortionFormat.StrikethroughType = TextStrikethroughType.Double;
presentation.Save("strikethrough.pptx", SaveFormat.Pptx);
Resultatet, från topp till botten: ingen genomstrykning, enkel genomstrykning och dubbel genomstrykning.

Ange texte rotation
Använd ITextFrameFormat.TextVerticalType för att ange en fördefinierad textriktning inom en form.
Följande kodexempel sätter textriktningen i formen till TextVerticalType.Vertical270, vilket roterar texten 90 grader moturs:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
autoShape.TextFrame.TextFrameFormat.TextVerticalType = TextVerticalType.Vertical270;
presentation.Save("text_rotation.pptx", SaveFormat.Pptx);
Resultatet:

Ange anpassad rotation för textramar
Använd ITextFrameFormat.RotationAngle för att ange en anpassad rotationsvinkel för en ITextFrame.
Kodexemplet nedan roterar textramen med 3 grader medurs inom formen:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
autoShape.TextFrame.TextFrameFormat.RotationAngle = 3;
presentation.Save("custom_text_rotation.pptx", SaveFormat.Pptx);
Resultatet:

Ange radavstånd för stycken
Aspose.Slides tillhandahåller IParagraphFormat.SpaceAfter, IParagraphFormat.SpaceBefore, och IParagraphFormat.SpaceWithin för att styra styckeavstånd. Dessa egenskaper används på följande sätt:
- Använd ett positivt värde för att ange radavstånd som en procent av radens höjd.
- Använd ett negativt värde för att ange radavstånd i punkter.
Följande exempel sätter avståndet inom det första stycket till 200 % av radhöjden (dubbel radavstånd):
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
paragraph.ParagraphFormat.SpaceWithin = 200;
presentation.Save("line_spacing.pptx", SaveFormat.Pptx);
Resultatet:

Styr radbrytning
Regler för radbrytning i stycken är användbara i smala textblock och presentationer som blandar latinsk och östasiatisk text. Följande egenskaper tillhör IParagraphFormat, så de gäller ett helt stycke:
- LatinLineBreak styr radbrytningsregler för latin. I blandad text kan ändring av den också förändra var intilliggande östasiatisk text och skiljetecken bryts.
- EastAsianLineBreak styr radbrytningsregler för östasiatisk text, inklusive begränsningar för tecken i början och slutet av en rad.
Dessa regler ersätter inte ITextFrameFormat.WrapText, som möjliggör automatisk radbrytning inom en textram. De påverkar layouten när radbrytning sker; de infogar inte radbrytningstecken. En explicit radbrytning tvingar en ny rad i stycket oberoende av tillgänglig bredd.
Följande fristående exempel skapar ett smalt textblock som innehåller kinesisk och latin text. Det sätter båda radbrytningsegenskaperna explicit och sparar “line_breaking.pptx”. För att experimentera med någon regel, ändra den egenskapens värde medan de andra inställningarna hålls oförändrade. Exemplet använder 24‑punkts Arial och SimSun med en rambredd på 160 punkter och noll horisontella textrammarginaler. ITextFrameFormat.AutofitType är satt till TextAutofitType.None så att textstorlek och ramdimensioner förblir fasta.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 160, 300);
shape.FillFormat.FillType = FillType.NoFill;
var textFrame = shape.TextFrame;
textFrame.TextFrameFormat.WrapText = NullableBool.True;
textFrame.TextFrameFormat.AutofitType = TextAutofitType.None;
textFrame.TextFrameFormat.MarginLeft = 0;
textFrame.TextFrameFormat.MarginRight = 0;
var paragraph = textFrame.Paragraphs[0];
paragraph.Text = "中文排版测试,PowerPoint 中文演示。";
var format = paragraph.ParagraphFormat;
format.Alignment = TextAlignment.Left;
format.DefaultPortionFormat.FontHeight = 24;
format.DefaultPortionFormat.LatinFont = new FontData("Arial");
format.DefaultPortionFormat.EastAsianFont = new FontData("SimSun");
format.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
format.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
format.LatinLineBreak = NullableBool.False;
format.EastAsianLineBreak = NullableBool.True;
presentation.Save("line_breaking.pptx", SaveFormat.Pptx);
Styr hängande interpunktion
IParagraphFormat.HangingPunctuation låter behörig interpunktion sträcka sig förbi textradens högra kant i stället för att ta nästa rad. Den gäller hela stycket och är annorlunda än ett hängande indrag.
Följande fristående exempel aktiverar hängande interpunktion i en 100‑punkts bred textram och sparar “hanging_punctuation.pptx”. Med 24‑punkts Arial och noll horisontella textrammarginaler stannar den sista punkten efter “sentence” och sträcker sig förbi den högra textkanten. Sätt egenskapen till NullableBool.False för att jämföra: med dessa inställningar tar punkten en egen rad. Radbrytning är aktiverad och autofit inaktiverad för att hålla den tillgängliga bredden fast.
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 100, 200);
shape.FillFormat.FillType = FillType.NoFill;
var textFrame = shape.TextFrame;
textFrame.TextFrameFormat.WrapText = NullableBool.True;
textFrame.TextFrameFormat.AutofitType = TextAutofitType.None;
textFrame.TextFrameFormat.MarginLeft = 0;
textFrame.TextFrameFormat.MarginRight = 0;
var paragraph = textFrame.Paragraphs[0];
paragraph.Text = "Simple text, next sentence.";
var format = paragraph.ParagraphFormat;
format.Alignment = TextAlignment.Left;
format.DefaultPortionFormat.FontHeight = 24;
format.DefaultPortionFormat.LatinFont = new FontData("Arial");
format.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
format.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Black;
format.HangingPunctuation = NullableBool.True;
presentation.Save("hanging_punctuation.pptx", SaveFormat.Pptx);
Inte varje interpunktionstecken kan hänga. De teckensnitt- och layoutvillkor som beskrivits ovan gäller också för denna jämförelse: att ändra teckensnitt, tillgänglig bredd, marginaler eller autofit‑inställningar kan ta bort den synliga skillnaden.
Ange autofit-typ för textramar
ITextFrameFormat.AutofitType bestämmer hur text beter sig när den överskrider behållarens gränser. Använd den för att styra om texten krymper, flödar över eller automatiskt ändrar formens storlek. Följande exempel konfigurerar formen att anpassa storlek för att passa texten och sparar resultatet till “autofit_type.pptx”.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
autoShape.TextFrame.TextFrameFormat.AutofitType = TextAutofitType.Shape;
presentation.Save("autofit_type.pptx", SaveFormat.Pptx);
För att räkna rader efter automatisk radbrytning och se hur text- eller formbredd ändrar resultatet, se Räkna renderade rader. Antalet rader visar ensam inte om texten överskrider sin behållare.
Ange ankare för textramar
ITextFrameFormat.AnchoringType definierar hur text placeras vertikalt inuti en form, till exempel längst upp, i mitten eller längst ner. Följande exempel förankrar texten i botten av den första formen och sparar resultatet till “text_anchor.pptx”.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.Shapes[0];
autoShape.TextFrame.TextFrameFormat.AnchoringType = TextAnchorType.Bottom;
presentation.Save("text_anchor.pptx", SaveFormat.Pptx);
Ange texttabulering
Använd IParagraphFormat.DefaultTabSize och IParagraphFormat.Tabs för att konfigurera tabbstopp i ett stycke. Följande exempel sätter standardtabbsteg till 100 punkter och lägger till ett vänsterjusterat tabbstopp vid 30 punkter. Dessa inställningar påverkar texter som innehåller tabbtecken.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.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);
Resultatet:

Ange språk för stavningskontroll
Aspose.Slides tillhandahåller IBasePortionFormat.LanguageId, som låter dig ange språk för stavningskontroll för en textdel. Språket för stavningskontroll bestämmer vilket språk som används för stavnings- och grammatikgranskning i PowerPoint.
Följande exempel kräver “presentation.pptx” med en textruta som den första formen på den första bilden och minst ett stycke. Det ersätter första styckets innehåll med “1。”, sätter SimSun som teckensnitt och tilldelar språket förenklad kinesiska (zh-CN). Det sparar resultatet till “proofing_language.pptx”:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("presentation.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.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;
// Ange språk för korrekturläsning till förenklad kinesiska.
textPortion.PortionFormat.LanguageId = "zh-CN";
textPortion.Text = "1。";
paragraph.Portions.Add(textPortion);
presentation.Save("proofing_language.pptx", SaveFormat.Pptx);
Ange standardspråk
Använd LoadOptions.DefaultTextLanguage för att definiera standardspråket för text som skapas när en presentation läses in eller skapas. Följande exempel skapar en presentation med amerikansk engelska som standardspråk för text, lägger till en textruta och skriver ut en-US för dess första textdel.
using System;
using Aspose.Slides;
var loadOptions = new LoadOptions();
loadOptions.DefaultTextLanguage = "en-US";
using var presentation = new Presentation(loadOptions);
var slide = presentation.Slides[0];
// Lägg till en ny rektangelform med text.
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 50);
shape.TextFrame.Text = "Sample text";
// Kontrollera språk för den första textdelen.
var portion = shape.TextFrame.Paragraphs[0].Portions[0];
Console.WriteLine(portion.PortionFormat.LanguageId);
Ange standardtextstil
För att applicera standardtextformatering på presentationsnivå, använd IPresentation.DefaultTextStyle.
Följande exempel sätter ett 14‑punkts fet stil som standard för toppnivåstycken i en ny presentation och sparar den till “default_text_style.pptx”. Text kan ärva dessa standardinställningar såvida inte mer specifik formatering åsidosätter dem.
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
// Hämta det översta styckeformatet.
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);
Extrahera text med versaler‑effekt
I PowerPoint gör applicering av All Caps-teffekten att text visas med versaler på bilden även om den ursprungligen skrivits med gemener. När du hämtar en sådan textdel med Aspose.Slides returnerar biblioteket texten exakt som den angavs. För att matcha den visade texten, kontrollera TextCapType och konvertera den returnerade strängen till versaler när värdet är All.
Detta exempel kräver “sample2.pptx” med en textruta som den första formen på den första bilden. Dess första stycke första del innehåller “Hello, Aspose!” med All Caps‑effekten tillämpad, som visas nedan.

Kodexemplet nedan visar hur du extraherar texten med All Caps-effekten tillämpad:
using System;
using Aspose.Slides;
using var presentation = new Presentation("sample2.pptx");
var slide = presentation.Slides[0];
var autoShape = (IAutoShape)slide.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}");
}
Utdata:
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
FAQ
Hur ändrar jag text i en tabell på en bild?
För att ändra text i en tabell på en bild, använd ITable. Iterera genom cellerna och uppdatera varje cell via ICell.TextFrame och styckeformatering via IParagraph.ParagraphFormat.
Hur applicerar jag en gradientfärg på text i en PowerPoint‑bild?
För att applicera en gradientfärg på text, använd IBasePortionFormat.FillFormat. Ställ in IFillFormat.FillType till FillType.Gradient och konfigurera gradientstopp, riktning och transparens.
Relaterad funktion: Formatera text i bilder.