MultiFormattedText.cs
- //
- // This code is part of Document Solutions for PDF demos.
- // Copyright (c) MESCIUS inc. All rights reserved.
- //
- using System;
- using System.IO;
- using System.Drawing;
- using GrapeCity.Documents.Drawing;
- using GrapeCity.Documents.Pdf;
- using GrapeCity.Documents.Text;
-
- namespace DsPdfWeb.Demos.Basics
- {
- // This sample shows how to use different text formats
- // (fonts, colors) in a single paragraph.
- public class MultiFormattedText
- {
- public int CreatePDF(Stream stream)
- {
- // Function to generate sample text quoting its formatting options:
- Func<TextFormat, string> makeSampleText = (tf_) =>
- {
- string boldItalic = string.Empty;
- if (tf_.Font.FontBold)
- boldItalic = "bold ";
- if (tf_.Font.FontItalic)
- boldItalic += "italic ";
- if (boldItalic == string.Empty)
- boldItalic = "normal ";
- return $"This is {boldItalic}text drawn using font '{tf_.Font.FullFontName}', font size {tf_.FontSize} points, " +
- $"text color {tf_.ForeColor}, background color {tf_.BackColor}. ";
- };
- // Font names:
- const string times = "times new roman";
- const string arial = "arial";
- // Create document and text layout:
- var doc = new GcPdfDocument();
- var page = doc.NewPage();
- var g = page.Graphics;
- var tl = g.CreateTextLayout();
- // Use TextLayout to layout the whole page and maintain margins:
- tl.MaxHeight = page.Size.Height;
- tl.MaxWidth = page.Size.Width;
- tl.MarginAll = 72;
- // Get some fonts:
- var fc = new FontCollection();
- fc.RegisterDirectory(Path.Combine("Resources", "Fonts"));
- var fTimes = fc.FindFamilyName(times, false, false);
- var fTimesBold = fc.FindFamilyName(times, true, false);
- var fTimesItalic = fc.FindFamilyName(times, false, true);
- var fTimesBoldItalic = fc.FindFamilyName(times, true, true);
- var fArial = fc.FindFamilyName(arial, false, false);
- // Add text to TextLayout using different fonts and font sizes:
- var tf = new TextFormat() { Font = fTimes, FontSize = 12, };
- tl.Append(makeSampleText(tf), tf);
- tf.Font = fTimesBold;
- tf.FontSize += 2;
- tl.Append(makeSampleText(tf), tf);
- tf.Font = fTimesItalic;
- tf.FontSize += 2;
- tl.Append(makeSampleText(tf), tf);
- tf.Font = fTimesBoldItalic;
- tf.FontSize += 2;
- tl.Append(makeSampleText(tf), tf);
- tf.Font = fArial;
- tf.FontSize += 2;
- tl.Append(makeSampleText(tf), tf);
- // Add text with different foreground and background colors:
- tf.Font = fTimesBold;
- tf.ForeColor = Color.Tomato;
- tl.Append(makeSampleText(tf), tf);
- tf.Font = fTimesBoldItalic;
- tf.FontSize = 16;
- tf.ForeColor = Color.SlateBlue;
- tf.BackColor = Color.Orange;
- tl.Append(makeSampleText(tf), tf);
- // Finish with plain black on transparent again:
- tl.Append("The end.", new TextFormat() { Font = fTimes, FontSize = 14, });
- // Layout and draw text:
- tl.PerformLayout(true);
- g.DrawTextLayout(tl, PointF.Empty);
- // Done:
- doc.Save(stream);
- return doc.Pages.Count;
- }
- }
- }
-