如何正确存储每个表单字段的附加信息并使用iTextSharp检索它
问题描述:
我需要使用c#和iTextSharp创建一个带有表单的pdf文件并解析该表单。所以,如果我创建例如:一个文本框,我给它一个id像text_12和其他信息我创建另一个隐藏的文本框,并给它一个ID:lbl_12_title_someInfo_moreInfo等..其中12是唯一的ID ..后来我使用c#和iTextSharp解析,但它看起来并不像这样做..
我需要创建一个文本框和存储额外的信息,然后通过名称获取该字段,并从中检索额外的信息。我怎样才能做到这一点? 我试图存储文本框的默认值,但无法读取它,无论我尝试!如何正确存储每个表单字段的附加信息并使用iTextSharp检索它
答
基于上述意见,我的问题,因为我无法找到存储PDF领域内的元数据的地方,我终于用下面的方法,我觉得最简单的:
- 在Acrobat DC亲我创建一个可见的文本字段,并将其命名为“Input_1”。
- 然后我创建另一个字段,将其命名为:“Info_1”,将其设置为隐藏(在 字段属性中),并将其默认值设置为我需要存储的元数据 (例如,我可以存储Json字符串在那里:{group:1,title:'myTitle', moreInfo:'some more info'}。
- 因此,对于每个输入字段,我创建一个具有相同ID(数字) 的隐藏字段并存储其他信息在
- 它的默认值保存的PDF文档
-
使用iTextSharp的,我使用检索表单域:
PdfReader reader = new PdfReader(filePath); AcroFields formFields = reader.AcroFields; foreach (KeyValuePair <string, AcroFields.Item> kvp in formFields.Fields) { string fieldName = kvp.Key; string fieldId = fieldName.Split('_')[1]; string fieldInfo = formFields.GetField("Info_"+fieldId); string fieldType = formFields.GetFieldType(fieldName); // Now i can parse the fieldInfo string as I wish and store all info // in the Database }
将您试过的代码添加到您的问题中。 –
我在这里问一个最佳实践,我的代码是不相关的。有人使用Acrobat创建PDF表单,我解析字段名称,这是一个微不足道的代码,但似乎不是一种有效的做法。 – amira
你想在该领域存储什么样的附加信息?该信息是静态的,还是可以根据字段值进行更改? –