FlattenForm.vb
'' 
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
'' 
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Pdf.AcroForms
Imports GrapeCity.Documents.Pdf.Graphics
Imports GrapeCity.Documents.Drawing
Imports GrapeCity.Documents.Text

'' このサンプルは、データが入力されたAcroFormを簡単に"フラット化"する方法を示しています。
'' 例えば、元の記入済みフォームと同じに見えるように、フォームをフォームではない通常のPDFコンテンツに
'' 変換することができます。
'' このサンプルで読み込まれる記入済みフォームは、FormFieldsで生成されたものです。
Public Class FlattenForm
    Function CreatePDF(ByVal stream As Stream) As Integer
        Dim doc = New GcPdfDocument()
        Using fs = File.OpenRead(Path.Combine("Resources", "PDFs", "FormFields.pdf"))
            '' 記入済みフォームを含む PDF を開き、それを一時ドキュメントに読み込みます。
            Dim srcDoc = New GcPdfDocument()
            srcDoc.Load(fs)
            '' 元となるPDFのすべてのページと注釈を新しいPDFに描画します。
            For Each srcPage In srcDoc.Pages
                Dim page = doc.Pages.Add(srcPage.Size)
                Dim fxo = New FormXObject(doc, srcPage)
                page.Graphics.DrawForm(fxo, page.Bounds, Nothing, ImageAlign.Default)
                '' このメソッドにて、フォームフィールドを含むページ上のすべての注釈を描画します。
                srcPage.DrawAnnotations(page.Graphics, page.Bounds)
            Next
            '' PDF ドキュメントを保存します。
            doc.Save(stream)
            Return doc.Pages.Count
        End Using
    End Function
End Class