使用iTextSharp读取和重命名具有相同名称的多个字段

时间:2013-05-30 13:52:21

标签: c# pdf itextsharp

基本上我拥有的是带有复制/粘贴创建的表单字段的PDF(超过700个:/)。问题是,Acrobat允许所有具有相同名称的字段具有相同的值。这是一个问题,我希望每个字段都有一个唯一的值。 (除了手动重命名所有700个字段外,Acrobat软件不提供任何其他解决方案)

我用Google搜索并找到了一个C#库iTextSharp。我需要一些使用它的帮助,搜索谷歌并没有回答太多答案......

此代码仅返回一个字段,即我复制/粘贴的字段...不是单个字段。

PdfReader reader = new PdfReader("p31.pdf");
        using (FileStream fs = new FileStream("Test Out.pdf", FileMode.Create)) {
            PdfStamper stamper = new PdfStamper(reader, fs);
            AcroFields fields = stamper.AcroFields;

            foreach(KeyValuePair<string, AcroFields.Item> kpv in fields.Fields)
            {
                System.Console.WriteLine(kpv.Key);
            }

            stamper.Close();
        }

如何获得每个字段,然后重命名它们?感谢

1 个答案:

答案 0 :(得分:0)

PdfReader reader = new PdfReader("OriginalPDF");
PdfCopyFields copier = new PdfCopyFields(new FileStream("NewPDF", FileMode.Create));
int doc = 0;
foreach ( var item in reader.AcroFields.Fields )
  if ( item.Key.IndexOf("NameField") != -1 )
    reader.AcroFields.RenameField(item.Key, "NameField" + ( doc++ ));
 copier.AddDocument(reader, "1");   



 //Now you have finalPDF wiith Namefield1,Namefield2,Namefield3....