// 完毕:
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;
}
}
}