Hur man formaterar text i .NET

Hur man formaterar text i .NET

Aspose.Slides FOSS for .NET provides fine-grained text formatting through the PortionFormat klass. En Portion är den minsta oberoende enheten av text; den motsvarar ett enda formateringsintervall inom ett stycke. Denna guide visar hur man applicerar fetstil, kursiv, teckenstorlek och färgformatering på text i en presentation.

Steg-för-steg-guide

Steg 1: Installera paketet

dotnet add package Aspose.Slides.Foss

Steg 2: Lägg till en form med en textram

Innan du formaterar text måste en form innehålla en TextFrame. Använd shape.AddTextFrame() för att skapa en.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 500, 150);
var tf = shape.AddTextFrame("Default text: will be formatted");
prs.Save("output.pptx", SaveFormat.Pptx);

Steg 3: Åtkomst till TextFrame

shape.AddTextFrame() returnerar TextFrame objektet. Du kan också hämta det senare via shape.TextFrame.

var tf = shape.TextFrame;          // if the frame already exists
var tf = shape.AddTextFrame("");   // creates a new frame

En TextFrame innehåller en lista med Paragraph objekt (tf.Paragraphs). Varje Paragraph innehåller Portion objekt (paragraph.Portions).


Steg 4: Applicera fetstil och kursiv formatering

Använd PortionFormat.FontBold och PortionFormat.FontItalic. Dessa egenskaper accepterar NullableBool.True, NullableBool.False, eller NullableBool.NotDefined (ärva från master).

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 500, 150);
var tf = shape.AddTextFrame("Bold and italic text");

var fmt = tf.Paragraphs[0].Portions[0].PortionFormat;
fmt.FontBold = NullableBool.True;
fmt.FontItalic = NullableBool.True;

prs.Save("bold-italic.pptx", SaveFormat.Pptx);

Steg 5: Ställ in teckenstorlek och färg

Ange PortionFormat.FontHeight för storlek (i punkter) och använd FillFormat för färg.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 500, 150);
var tf = shape.AddTextFrame("Large corporate-blue heading");

var fmt = tf.Paragraphs[0].Portions[0].PortionFormat;
fmt.FontHeight = 32;                          // 32pt font
fmt.FontBold = NullableBool.True;
fmt.FillFormat.FillType = FillType.Solid;
fmt.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 0, 70, 127);

prs.Save("colored-text.pptx", SaveFormat.Pptx);

Color.FromArgb(alpha, red, green, blue) accepterar värden 0-255 för varje kanal.


Steg 6: Flera portioner i ett stycke

Ett enda stycke kan innehålla flera delar med olika formatering. Lägg till en ny Portion till ett stycke Portions samling:

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 600, 100);
var tf = shape.AddTextFrame("");  // start with empty frame

var paragraph = tf.Paragraphs[0];

// First portion: normal text
var portion1 = paragraph.Portions[0];
portion1.Text = "Normal text followed by ";
portion1.PortionFormat.FontHeight = 20;

// Second portion: bold red text
var portion2 = new Portion();
portion2.Text = "bold red text";
portion2.PortionFormat.FontHeight = 20;
portion2.PortionFormat.FontBold = NullableBool.True;
portion2.PortionFormat.FillFormat.FillType = FillType.Solid;
portion2.PortionFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 200, 0, 0);
paragraph.Portions.Add(portion2);

prs.Save("mixed-format.pptx", SaveFormat.Pptx);

Vanliga problem och lösningar

Texten visas svart även efter att färgen har ställts in

Säkerställ FillFormat.FillType = FillType.Solid är inställd innan färgen tilldelas. Utan att ange fyllningstypen kan färgändringen sakna effekt.

NullableBool.True vs true

PortionFormat.FontBold förväntar sig NullableBool.True, inte C# true. Tilldelning av C# true kommer inte att kompilera eftersom typerna är inkompatibla.

Typsnitt visas inte i den sparade filen

Den LatinFont egenskapen anger den latinska teckensnittsfamiljen. Om den inte är inställd används presentationens temateckensnitt. Anpassade teckensnitt måste vara inbäddade eller tillgängliga på visningsdatorn.


Vanliga frågor

Hur ändrar jag typsnittsfamiljen?

Ange PortionFormat.LatinFont:

fmt.LatinFont = new FontData("Arial");

FontData accepterar teckensnittsfamiljens namn som en sträng.

Hur ställer jag in styckejustering?

Använd ParagraphFormat.Alignment:

tf.Paragraphs[0].ParagraphFormat.Alignment = TextAlignment.Center;

Stödda värden: Left, Center, Right, Justify.

Hur ställer jag in radavstånd?

Använd ParagraphFormat.SpaceBefore (punkter före stycke) eller ParagraphFormat.SpaceAfter (punkter efter stycke):

tf.Paragraphs[0].ParagraphFormat.SpaceBefore = 12;   // 12pt before
tf.Paragraphs[0].ParagraphFormat.SpaceAfter = 6;     // 6pt after

Se även

 Svenska