FlattenForm.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
{
    // このサンプルは、データが入力されたAcroFormを簡単に"フラット化"する方法を示しています。
    // 例えば、元の記入済みフォームと同じに見えるように、フォームをフォームではない通常のPDFコンテンツに
    // 変換することができます。
    // このサンプルで読み込まれる記入済みフォームは、FormFieldsで生成されたものです。
    public class FlattenForm
    {
        public int CreatePDF(Stream stream)
        {
            using var fs = File.OpenRead(Path.Combine("Resources", "PDFs", "FormFields.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);
            }
            // PDF ドキュメントを保存します。
            doc.Save(stream);
            return doc.Pages.Count;
        }
    }
}