TextToOutlines.cs
// 完毕:
using System;
using System.IO;
using System.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Pdf.AcroForms;
using GrapeCity.Documents.Pdf.Graphics;
using GrapeCity.Documents.Drawing;
using GrapeCity.Documents.Text;

namespace DsPdfWeb.Demos
{
    // 此示例演示如何将现有 PDF 中的所有文本转换为字形轮廓。
    // 生成的 PDF 看起来与原始 PDF 完全相同,但其中的所有字形
    // 将被渲染为图形路径。这可以用来操纵路径,
    // 或者确保无法复制或搜索文本。
    // 请注意,生成的文档将没有字体(例如,参见
    // 文档属性 | GcDocs.PdfViewer 中的字体选项卡)。
    // 本示例使用的原始PDF是由Wetlands生成的。
    public class TextToOutlines
    {
        public int CreatePDF(Stream stream)
        {
            using var fs = File.OpenRead(Path.Combine("Resources", "PDFs", "Wetlands.pdf"));
            // 将源 PDF 加载到临时文档中:
            var srcDoc = new GcPdfDocument();
            srcDoc.Load(fs);
            // 在新 PDF 的页面上绘制源文档的所有页面:
            var doc = new GcPdfDocument();
            foreach (var srcPage in srcDoc.Pages)
            {
                var page = doc.Pages.Add(srcPage.Size);
                // 将 Graphics.DrawTextAsPath 设置为 true 会使所有字形绘制为图形路径
                // 而不是使用字体渲染文本:
                page.Graphics.DrawTextAsPath = true;
                // 在目标上绘制源页面:
                srcPage.Draw(page.Graphics, srcPage.Bounds);
            }
            // 完毕:
            doc.Save(stream);
            return doc.Pages.Count;
        }
    }
}