In order to duplicate a form in a PDF, I'm doing the following (used this code as reference):
Dim pdfDocumentR As PdfDocument
Dim writer As PdfWriter = New PdfWriter(DEST)
writer.SetSmartMode(True)
Dim pdfDocumentW As New PdfDocument(writer)
Dim tmp As ByteArrayOutputStream
Dim form As PdfAcroForm
Dim fields As IDictionary(Of String, PdfFormField)
Dim tf As PdfFormField
For Each documento As Documento In documentos
tmp = New ByteArrayOutputStream()
pdfDocumentR = New PdfDocument(New PdfReader(SRC), New PdfWriter(tmp))
form = PdfAcroForm.GetAcroForm(pdfDocumentR, False)
fields = form.GetFormFields()
documento.campos.remove("templateID")
Dim keys As Dictionary(Of String, String).KeyCollection = documento.campos.Keys
For Each key As String In keys
Dim value As String
documento.campos.TryGetValue(key, value)
fields.TryGetValue(key, tf)
tf.SetValue(value)
Next
form.FlattenFields()
pdfDocumentR.Close()
pdfDocumentR = New PdfDocument(New PdfReader(New MemoryStream(tmp.GetBuffer())))
pdfDocumentR.CopyPagesTo(1, pdfDocumentR.GetNumberOfPages(), pdfDocumentW, New PdfPageFormCopier())
pdfDocumentR.Close()
Next
pdfDocumentW.Close()
I'm getting 'System.NullReferenceException' when it tries to flatten the form - form.FlattenFields().
Could someone help me?