To emphasize some words or phrases in a sentence, most probably you will set different formats such as font type, color, and size to these parts. When we programmatically insert a sentence with various kinds of font styles into a PowerPoint slide, it is an easy task if we format the text at the first place and then append the text to a paragraph. In this article, we attach more importance to introduce how to mix font styles within a single TextRange on an existing PowerPoint slide.
Test File:
As is shown in test file, all words in this TextRange are in the same font style. Now we would like to make some changes.
Code Snippet:
Step 1: Create a new PowerPoint document and load the test file.
Presentation ppt = new Presentation("Sample.pptx", FileFormat.Pptx2010);
Step 2: Get the shape from PowerPoint slide, get the text from shape and save to a new string variable.
IAutoShape shape = ppt.Slides[0].Shapes[0] as IAutoShape; string originalText = shape.TextFrame.Text;
Step 3: Split the string by specified words and return substrings to a string array.
string[] splitArray = originalText.Split(new string[] { "bold", "red","underlined","bigger font size" }, StringSplitOptions.None);
Step 4: Remove the paragraph from TextRange.
TextParagraph tp = shape.TextFrame.TextRange.Paragraph; tp.TextRanges.Clear();
Step 5: Append normal text that is in front of ‘bold’ to the paragraph.
TextRange tr = new TextRange(splitArray[0]); tp.TextRanges.Append(tr);
Step 6: Set font style of the text ‘bold’ as bold, and append it to the paragraph.
tr = new TextRange("bold"); tr.IsBold = TriState.True; tp.TextRanges.Append(tr);
Step 7: Repeat step 5 and step 6 to append the rest normal texts and formatted texts to the paragraph.
//normal text tr = new TextRange(splitArray[1]); tp.TextRanges.Append(tr); //red text tr = new TextRange("red"); tr.Fill.FillType = Spire.Presentation.Drawing.FillFormatType.Solid; tr.Format.Fill.SolidColor.Color = Color.Red; tp.TextRanges.Append(tr); //normal text tr = new TextRange(splitArray[2]); tp.TextRanges.Append(tr); //underline text tr = new TextRange("underlined"); tr.TextUnderlineType = TextUnderlineType.Single; tp.TextRanges.Append(tr); //normal text tr = new TextRange(splitArray[3]); tp.TextRanges.Append(tr); //bigger size text tr = new TextRange("bigger font size"); tr.FontHeight = 35; tp.TextRanges.Append(tr); //normal text tr = new TextRange(splitArray[4]); tp.TextRanges.Append(tr);
Step 8: Save the file.
ppt.SaveToFile("Result.pptx", FileFormat.Pptx2010);
Output:
Full Code:
using Spire.Presentation; using System; using System.Drawing; namespace MixFontStyle { class Program { static void Main(string[] args) { Presentation ppt = new Presentation("Sample.pptx", FileFormat.Pptx2010); IAutoShape shape = ppt.Slides[0].Shapes[0] as IAutoShape; string originalText = shape.TextFrame.Text; string[] splitArray = originalText.Split(new string[] { "bold", "red", "underlined", "bigger font size" }, StringSplitOptions.None); TextParagraph tp = shape.TextFrame.TextRange.Paragraph; tp.TextRanges.Clear(); //normal text TextRange tr = new TextRange(splitArray[0]); tp.TextRanges.Append(tr); //bold text tr = new TextRange("bold"); tr.IsBold = TriState.True; tp.TextRanges.Append(tr); //normal text tr = new TextRange(splitArray[1]); tp.TextRanges.Append(tr); //red text tr = new TextRange("red"); tr.Fill.FillType = Spire.Presentation.Drawing.FillFormatType.Solid; tr.Format.Fill.SolidColor.Color = Color.Red; tp.TextRanges.Append(tr); //normal text tr = new TextRange(splitArray[2]); tp.TextRanges.Append(tr); //underline text tr = new TextRange("underlined"); tr.TextUnderlineType = TextUnderlineType.Single; tp.TextRanges.Append(tr); //normal text tr = new TextRange(splitArray[3]); tp.TextRanges.Append(tr); //bigger size text tr = new TextRange("bigger font size"); tr.FontHeight = 35; tp.TextRanges.Append(tr); //normal text tr = new TextRange(splitArray[4]); tp.TextRanges.Append(tr); ppt.SaveToFile("Result.pptx", FileFormat.Pptx2010); } } }
Imports Spire.Presentation Imports System.Drawing Namespace MixFontStyle Class Program Private Shared Sub Main(args As String()) Dim ppt As New Presentation("Sample.pptx", FileFormat.Pptx2010) Dim shape As IAutoShape = TryCast(ppt.Slides(0).Shapes(0), IAutoShape) Dim originalText As String = shape.TextFrame.Text Dim splitArray As String() = originalText.Split(New String() {"bold", "red", "underlined", "bigger font size"}, StringSplitOptions.None) Dim tp As TextParagraph = shape.TextFrame.TextRange.Paragraph tp.TextRanges.Clear() 'normal text Dim tr As New TextRange(splitArray(0)) tp.TextRanges.Append(tr) 'bold text tr = New TextRange("bold") tr.IsBold = TriState.[True] tp.TextRanges.Append(tr) 'normal text tr = New TextRange(splitArray(1)) tp.TextRanges.Append(tr) 'red text tr = New TextRange("red") tr.Fill.FillType = Spire.Presentation.Drawing.FillFormatType.Solid tr.Format.Fill.SolidColor.Color = Color.Red tp.TextRanges.Append(tr) 'normal text tr = New TextRange(splitArray(2)) tp.TextRanges.Append(tr) 'underline text tr = New TextRange("underlined") tr.TextUnderlineType = TextUnderlineType.[Single] tp.TextRanges.Append(tr) 'normal text tr = New TextRange(splitArray(3)) tp.TextRanges.Append(tr) 'bigger size text tr = New TextRange("bigger font size") tr.FontHeight = 35 tp.TextRanges.Append(tr) 'normal text tr = New TextRange(splitArray(4)) tp.TextRanges.Append(tr) ppt.SaveToFile("Result.pptx", FileFormat.Pptx2010) End Sub End Class End Namespace