TextToOutlines.cs
// 
// このコードは、DioDocs for PDF のサンプルの一部として提供されています。
// © MESCIUS inc. All rights reserved.
// 
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と全く同じように見えますが、その中のすべてのグリフはGraphicsPathとして
    // レンダリングされます。この方法は、テキストのコピーや検索を不可とするために使用することができます。
    // なお、結果として得られるPDFにはフォントが存在しないことに注意してください。
    // このサンプルで使用した元のPDFは、 PaginatedTextによって生成されたものです。
    public class TextToOutlines
    {
        public int CreatePDF(Stream stream)
        {
            using var fs = File.OpenRead(Path.Combine("Resources", "PDFs", "StrongInTheRain.pdf"));
                // 元となるPDFを開き、それを一時ドキュメントに読み込みます。
                var srcDoc = new GcPdfDocument();
                srcDoc.Load(fs);
                // 元となるPDFのすべてのページを新しいPDFのページに描画します。
            var doc = new GcPdfDocument();
                foreach (var srcPage in srcDoc.Pages)
                {
                    var page = doc.Pages.Add(srcPage.Size);
                    // Graphics.DrawTextAsPathをtrueに設定すると、すべてのグリフがフォントを使ってテキストを
                    // レンダリングするのではなく、GraphicsPathとして描画されます。
                    page.Graphics.DrawTextAsPath = true;
                    // ターゲット上に元となるページを描画します。
                    srcPage.Draw(page.Graphics, srcPage.Bounds);
                }
                // PDF ドキュメントを保存します。
                doc.Save(stream);
                return doc.Pages.Count;
        }
    }
}