Adobe 无法使用iTextSharp从动态PDF表单读取字段
我使用了AdobeLiveCycle designer生成的简单动态pdf表单,并尝试使用iTextSharp 5.0/5.5版本读取字段,使用以下代码Adobe 无法使用iTextSharp从动态PDF表单读取字段,adobe,itextsharp,livecycle-designer,Adobe,Itextsharp,Livecycle Designer,我使用了AdobeLiveCycle designer生成的简单动态pdf表单,并尝试使用iTextSharp 5.0/5.5版本读取字段,使用以下代码 string pdfTemplate = @"c:\ExpandingTextBox.pdf"; PdfReader pdfReader = null; pdfReader = new PdfReader(pdfTemplate);
string pdfTemplate = @"c:\ExpandingTextBox.pdf";
PdfReader pdfReader = null;
pdfReader = new PdfReader(pdfTemplate);
StringBuilder sb = new StringBuilder();
foreach (var de in pdfReader.AcroFields.Fields)
{
sb.Append(de.Key.ToString() + Environment.NewLine);
}
pdfReader.Close();
示例PDF可从以下链接下载:
但我总是得到零字段,即使我在adobe live cycle designer中看到该字段。我不知道我在这里做什么。非常感谢您的帮助。我已使用FillXfaForm方法填充动态pdf表单,如下所示。在执行此操作之前,您需要确保在adobe live cycle中创建动态pdf表单
string pdfTemplate = @"c:\test.pdf";
string newFile = @"c:\new_test.pdf";
string xmlForm = @"C:\fill_test.xml";
PdfReader pdfReader = new PdfReader(pdfTemplate);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(
newFile, FileMode.Create));
pdfStamper.AcroFields.Xfa.FillXfaForm(xmlForm);
pdfStamper.FormFlattening = false;
pdfStamper.Close();
pdfReader.Close();
请告诉我是否有人需要帮助来理解这一点。下面的代码示例是我用来从I-9.pdf政府就业表格中提取字段值的。此pdf格式类似于上述公认的答案和评论。使用传统的AcroFields.Fields在这种类型的pdf表单上不起作用
using System.Linq;
using iTextSharp.text.pdf;
namespace PdfFormReader
{
class Program
{
static void Main(string[] args)
{
string pdfTemplate = @"C:\\forms\\i-9.pdf";
PdfReader pdfReader = new PdfReader(pdfTemplate);
var xfaFields = pdfReader.AcroFields.Xfa.DatasetsSom.Name2Node;
foreach (var xmlNode in xfaFields)
{
Console.WriteLine(xmlNode.Value.Name+":"+xmlNode.Value.InnerText);
}
/*Example of how to get a field value*/
var lastName = xfaFields.First(a => a.Value.Name == "textFieldLastNameGlobal").Value.InnerText;
Console.ReadLine();
}
}
}
Adobe LiveCycle designer创建XFA表单,而
pdfReader.AcroFields
主要管理Acroform表单,尤其是AcroFields.Fields
仅包含Acroform字段。您可能希望改为检查AcroFields
属性Xfa
。我也尝试了该选项,但字段计数仍然为零。字段计数为零-AcroFields。字段计数将保持为0;PDF中没有AcroForm字段。Xfa字段计数也为零。我不知道你在说什么。我使用iText/Java版本来访问信息,但是iTextSharp/C#应该是等效的<代码>System.out.printf(“%s”,pdfReader.getAcroFields().getXfa().getTemplateSom().getName2Node())
给我{form1[0].#子表单[0]。TextFieldContainer[0]。TextField1[0]=[field:null]}
。