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;
}
}
}