RemoveSignatures.vb
'' 完毕:
Imports System.IO
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Pdf.AcroForms

'' 此示例展示了如何查找和删除现有签名
'' 来自经过数字签名的 PDF。
'' 查看RemoveSignatureFields以获取删除任何签名的代码
'' 而是签名字段。
'' 本示例中使用的 PDF 是由 TimeSheet 创建的。
Public Class RemoveSignatures
    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)

            '' 字段可以是其他字段的子字段,因此我们使用
            '' 迭代整个树的递归方法:
            RemoveSignatures(doc.AcroForm.Fields)

            '' 完毕:
            doc.Save(stream)
            Return doc.Pages.Count
        End Using
    End Function

    Sub RemoveSignatures(ByVal fields As FieldCollection)
        For i = fields.Count - 1 To 0 Step -1
            If TypeOf fields(i) Is SignatureField Then
                DirectCast(fields(i), SignatureField).Value = Nothing
            End If
            RemoveSignatures(fields(i).Children)
        Next
    End Sub
End Class