FlattenForm.cs
// 
// このコードは、DioDocs for PDF のサンプルの一部として提供されています。
// Copyright (c) GrapeCity 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 GcPdfWeb.Samples
{
    // このサンプルは、データが入力されたAcroFormを簡単に"フラット化"する方法を示しています。
    // 例えば、元の記入済みフォームと同じに見えるように、フォームをフォームではない通常のPDFコンテンツに
    // 変換することができます。
    // このサンプルで読み込まれる記入済みフォームは、FormFieldsで生成されたものです。
    public class FlattenForm
    {
        public int CreatePDF(Stream stream)
        {
            GcPdfDocument doc = new GcPdfDocument();
            using (var fs = File.OpenRead(Path.Combine("Resources", "PDFs", "FormFields.pdf")))
            {
                // 記入済みフォームを含む PDF を開き、それを一時ドキュメントに読み込みます。
                var srcDoc = new GcPdfDocument();
                srcDoc.Load(fs);
                // 元となるPDFのすべてのページと注釈を新しいPDFに描画します。
                foreach (var srcPage in srcDoc.Pages)
                {
                    var page = doc.Pages.Add(srcPage.Size);
                    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;
            }
        }
    }
}