RemoveSignatureFields.vb
'' 完毕:
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)

            '' 完毕:
            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