当我按下按钮时,checkedlistbox的项目应该用PDF编写。 PDF文档有1页,有20个字段,但应该是灵活的。因此,如果checkedlistbox有52个条目,则程序将创建一个包含3页的PDF(复制pdf并将其添加2次)。这样可行,但以下页面的字段与第一个字段的名称相同。我希望这不是问题。
然后它读取字段名称:
PdfReader pdfReader = new PdfReader(path);
AcroFields pdfFormFields = pdfReader.AcroFields;
foreach (KeyValuePair<string, AcroFields.Item> kvp in pdfFormFields.Fields) {
listoffieldnames.Add(kvp.Key.ToString());
}
pdfReader.Close();
我的问题是,读者只读取第一页的字段。
答案 0 :(得分:0)
程序创建一个包含3页的PDF(复制pdf并添加2次)。这样可行,但以下页面的字段与第一个字段的名称相同。我希望这不是一个问题。
嗯,这个 是一个问题。
PDF只有一个抽象表单定义,其中唯一的字段由其完全限定名称标识。另一方面,字段可以具有多个小部件,即多个可视化,其可以在显示细节上不同(例如,可以使用不同的字体或字体大小),但是它们都显示相同的值。
将相同源PDF的多个副本复制到目标PDF中的代码可以通过不同方式处理:
(如果您使用iTextSharp创建这些副本:iTextSharp可以以不同的方式用于合并PDF,无论是快速还是愚蠢,还是不那么快和智能,实现第二或第三选项。)
PDF浏览器如何处理以愚蠢的第一种方式创建的PDF对于不同的查看者甚至同一查看者的不同版本有所不同:重复的字段要么被解释为同一字段的多个窗口小部件,要么只被解释为其中一个字段相同的名称作为适当的字段处理,其他名称处于非活动/不存在状态。
在您的情况下以下页面的字段与第一个的字段相同,您的复制代码是前两种类型之一,因此如果同一字段的多个副本在所有,它们代表相同的单一形式字段。