如何使用iTextSharp读取PDF表单数据?我试图找出是否可以使用iTextSharp读取PDF表单数据(填写并保存的表单)。我怎样才能做到这一点?您必须在PDF表单中找到字段名称。获取字段并读取它们的值。stringpdfTemplate="my.pdf";PdfReaderpdfReader=newPdfReader(pdfTemplate);AcroFields字段=pdfReader.AcroFields.Fields;stringval=fields.GetField("字段名");显然,在上面的代码中,字段名称是PDF表单字段的名称,GetField方法为其返回值的字符串表示形式。这是一篇文章,其中包含您可能会使用的示例代码。它展示了如何使用iTextSharp读写表单域。也许iTextSharp库最近发生了变化,但我无法获得可接受的答案。这是我的解决方案:varpdf_filename="pdf2read.pdf";使用(varreader=newPdfReader(pdf_filename)){varfields=reader.AcroFields.Fields;foreach(varkeyinfields.Keys){varvalue=reader.AcroFields.GetField(key);Console.WriteLine(key+":"+value);由于reader.AcroFields.Fields返回一个IDictionary而不仅仅是一个AcroFields对象,这是一个非常微妙的区别。如果您使用的是Powershell,则该字段的发现代码是:Add-Type-PathC:UsersMicahDesktopPDF_Testitextsharp.dll$MyPDF="C:UsersMicahDesktopPDF_Testsomething_important.pdf"$PDDFoc=New-ObjectiTextSharp.text.pdf.pdfreader-ArgumentList$MyPDF$PDDFoc.AcroFields.Fields此代码将为您提供PDF文档中所有字段的名称,“something_important.pdf”。这是您在知道字段名称后访问每个字段的方式:$PDDFDoc.AcroFields.GetField("Nameofthefieldhere")这对我有用!定义压模时请注意参数!'0',是stringTempFilename=Path.GetTempFileName();PdfReaderpdfReader=newPdfReader(文件名);//PdfStamperstamper=newPdfStamper(pdfReader,newFileStream(TempFilename,FileMode.Create));PdfStamperstamper=newPdfStamper(pdfReader,newFileStream(TempFilename,FileMode.Create),'',true);AcroFields字段=stamper.AcroFields;AcroFieldspdfFormFields=pdfReader.AcroFields;foreach(KeyValuePairkvpinfields.Fields){stringFieldValue=GetXMLNode(XMLFile,kvp.Key);如果(FieldValue!=""){fields.SetField(kvp.Key,FieldValue);}}stamper.FormFlattening=false;压模。关闭();pdfReader.Close()PDF名称为“report.pdf”。要读入TextBox1的数据字段为PDF中的“TextField25”。DimpdfAsString="report.pdf"DimreaderAsNewPdfReader(pdf)DimfieldsAsAcroFields=reader.AcroFieldsTextBox1.Text=fields.GetField("TextField25")重要说明:仅当使用iTextSharp创建PDF时,如果您如果PDF未展平(意味着字段应该是可编辑的),则只能使用此选项。即pdfStamper.FormFlattening=False这很简单..它就像一个魅力..?以上就是C#学习教程:如何使用iTextSharp读取PDF表单数据?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
