//
// This code is part of Document Solutions for Word demos.
// Copyright (c) MESCIUS inc. All rights reserved.
//
using System;
using System.IO;
using System.Drawing;
using System.Collections.Generic;
using System.Linq;
using GrapeCity.Documents.Word;
namespace DsWordWeb.Demos
{
// This sample shows how to list fonts embedded in a DOCX.
public class ListEmbedFonts
{
public GcWordDocument CreateDocx()
{
var doc = new GcWordDocument();
// Load a DOCX that contains embedded font:
doc.Load(Path.Combine("Resources", "WordDocs", "EmbedFonts.docx"));
var embeddedFont = doc.Fonts.FirstOrDefault(fi_ => fi_.Embedded.Count > 1)?.Embedded[0];
doc.Body.Paragraphs.Add("Embedded fonts found in this document:", doc.Styles[BuiltInStyleId.Heading1]);
var myListTemplate = doc.ListTemplates.Add(BuiltInListTemplateId.BulletDefault, "myListTemplate");
// Enumerate all embedded fonts:
foreach (var fi in doc.Fonts)
{
foreach (var ef in fi.Embedded)
{
var p = doc.Body.Paragraphs.Add(doc.Styles[BuiltInStyleId.ListParagraph]);
p.ListFormat.Template = myListTemplate;
var run = p.GetRange().Runs.Add($"Found embedded font of type {ef.Type} in font \"{fi.Name}\".");
run.Font.Name = fi.Name;
if (ef.Type == EmbeddedFontType.Bold)
run.Font.Bold = true;
else if (ef.Type == EmbeddedFontType.Italic)
run.Font.Italic = true;
else if (ef.Type == EmbeddedFontType.BoldItalic)
run.Font.Bold = run.Font.Italic = true;
}
}
// Done:
return doc;
}
}
}