EasyBulletList.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 . Pdf ; using GrapeCity . Documents . Text ; using GrapeCity . Documents . Drawing ; using GCTEXT = GrapeCity . Documents . Text ; using GCDRAW = GrapeCity . Documents . Drawing ; namespace DsPdfWeb . Demos . Basics { // Shows how to easily render a simple bullet list using a single TextLayout. public class EasyBulletList { public int CreatePDF ( Stream stream ) { const int FontSize = 12 ; var doc = new GcPdfDocument (); var page = doc . Pages . Add (); var g = page . Graphics ; var tl = g . CreateTextLayout (); var img = GCDRAW . Image . FromFile ( Path . Combine ( "Resources" , "ImagesBis" , "2020-website-gcdocs-headers_tall.png" )); var rc = page . Bounds ; rc . Height *= 0.65f ; g . DrawImage ( img , rc , null , ImageAlign . StretchImage ); var ip = new PointF ( 48 , 72 ); var font = GCTEXT . Font . FromFile ( Path . Combine ( "Resources" , "Fonts" , "OpenSans-Regular.ttf" )); var tfCap = new TextFormat () { Font = font , FontSize = FontSize * 1.6f , ForeColor = Color . White }; var tf = new TextFormat () { Font = font , FontSize = FontSize , ForeColor = Color . White }; tl . MaxWidth = 72 * 6 ; // Header: tl . AppendLine ( "Feature-Rich C# .NET PDF API Library for Total Document Control" , tfCap ); tl . AppendLine ( tfCap ); tl . AppendLine ( "Document Solutions for PDF (DsPdf, previously GcPdf) allows you to generate documents with speed, memory efficiency with no dependencies." , tf ); tl . AppendLine ( tf ); g . DrawTextLayout ( tl , ip ); // Bullet list: ip . Y += tl . ContentHeight ; tl . Clear (); const string bullet = "\x2022\x2003" ; tl . FirstLineIndent = - g . MeasureString ( bullet , tf ). Width ; tl . ParagraphSpacing += 4 ; tl . Append ( bullet , tf ); tl . AppendLine ( "Generate, load, edit, and save PDF documents in C# or VB" , tf ); tl . Append ( bullet , tf ); tl . AppendLine ( "Support multiple languages with full text, paragraph formatting, and fonts" , tf ); tl . Append ( bullet , tf ); tl . AppendLine ( "Mark and redact sensitive content from PDFs" , tf ); tl . Append ( bullet , tf ); tl . AppendLine ( "View or embed audio and video content in PDFs" , tf ); tl . Append ( bullet , tf ); tl . AppendLine ( "Multiple options for optimizing PDF documents" , tf ); tl . Append ( bullet , tf ); tl . AppendLine ( "Support hundreds of PDF features" , tf ); tl . Append ( bullet , tf ); tl . AppendLine ( "All features are fully supported on Windows, macOS, and Linux" , tf ); tl . Append ( bullet , tf ); tl . AppendLine ( "Includes a JavaScript PDF Viewer to view and edit PDF documents" , tf ); g . DrawTextLayout ( tl , ip ); doc . Save ( stream ); return doc . Pages . Count ; } } }