FlattenForm.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
{
    // 这个示例展示了如何使用数据轻松“展平”AcroForm PDF -
    // 即将该表单转换为非表单 PDF,如下所示
    // 原始填写的表格。
    // 本示例加载的原始填写表单是由FormFields生成的。
    public class FlattenForm
    {
        public int CreatePDF(Stream stream)
        {
            using var fs = File.OpenRead(Path.Combine("Resources", "PDFs", "form-fields.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();
                var fxo = new FormXObject(doc, srcPage);
                page.Graphics.DrawForm(fxo, page.Bounds, null, ImageAlign.Default);
                // 此方法在页面上绘制所有注释,包括表单字段小部件:
                srcPage.DrawAnnotations(page.Graphics, page.Bounds);
            }
            // 完毕:
            doc.Save(stream);
            return doc.Pages.Count;
        }
    }
}