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

'' このサンプルは、PDF から署名フィールドを見つけて削除する方法を示します。
'' このサンプルのコードは、RemoveSignatures のコードとほぼ同じです。これにより、
'' すべての署名フィールドも検索されますが、署名だけが削除され、フィールドは残ります。
'' このサンプルで使用されている PDF は、TimeSheet によって作成されました。
Public Class RemoveSignatureFields
    Public Function CreatePDF(ByVal stream As Stream) As Integer
        Dim doc = New GcPdfDocument()
        Using fs As New FileStream(Path.Combine("Resources", "PDFs", "TimeSheet.pdf"), FileMode.Open, FileAccess.Read)
            doc.Load(fs)

            '' フィールドは他のフィールドの子になる可能性があるため、
            '' 再帰メソッドを使用してツリー全体を反復処理します。
            RemoveSignatureFields(doc.AcroForm.Fields)

            '' PDF ドキュメントを保存します。
            doc.Save(stream)
            Return doc.Pages.Count
        End Using
    End Function

    Sub RemoveSignatureFields(ByVal fields As FieldCollection)
        For i = fields.Count - 1 To 0 Step -1
            RemoveSignatureFields(fields(i).Children)
            If TypeOf fields(i) Is SignatureField Then
                fields.RemoveAt(i)
            End If
        Next
    End Sub
End Class