iTextSharp无法正确读取pdf中的字段

时间:2019-03-11 22:27:30

标签: winforms itext pdf-form pdfstamper

我对iTextSharp有问题。假设我在PDF文件中有两行字段(文件是给定的,但我不知道它是如何创建的)

第1行:

data[0].#subform[0].Tabella1[0].Riga2[0].DATA[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAINIPM[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAINILM[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAENDLM[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAENDAM[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAINIPP[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAINILP[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAENDLP[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAENDAP[0]

第2行:

data[0].#subform[0].Tabella1[0].Riga3[0].DATA[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAINIPM[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAINILM[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAENDLM[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAENDAM[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAINIPP[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAINILP[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAENDLP[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAENDAP[0]

我使用以下代码阅读了此字段:

            String newFile = source.Insert(source.Length - 4, "newModyfiy");
            using (FileStream outFile = new FileStream(newFile, FileMode.Create))
            {
                PdfReader pdfReader = new PdfReader(source);
                foreach (KeyValuePair<String, AcroFields.Item> kvp in pdfReader.AcroFields.Fields)
                {

                            int fileType = pdfReader.AcroFields.GetFieldType(kvp.Key);
                            string filedValue = pdfReader.AcroFields.GetField(kvp.Key);
                            string transFileName = pdfReader.AcroFields.GetTranslatedFieldName(kvp.Key);
                            textBox1.Text = textBox1.Text + fileType.ToString() + " " + filedValue + " " + transFileName + Environment.NewLine;
                }
                pdfReader.Close();
            }

我只获得第一行的两行值。我的目标是将值写入这些字段并保存新文件。当我使用时:

PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create), '\0', true);

我总是覆盖第一行的值(当我尝试在第二行设置值时,它会出现在第一行)。如果我将最后一个参数PdfStamper更改为false,则会正确写入fileds,但无法手动编辑文件。

这是pdf文件的问题吗?有没有办法读取然后将值写入适当的文件?

我花了几天的时间,找不到这种奇怪行为的原因。 任何小的帮助,甚至线索都将受到赞赏。

编辑: 我添加提到的PDF文件。 https://ufile.io/mwni5

我删除了一些对象,但保留了常规结构。

0 个答案:

没有答案