我想知道是否可以使用iTextSharp读取PDF表格数据(表格填入并保存在表格中)。我怎样才能做到这一点?如何使用iTextSharp读取PDF表格数据?
回答
您必须在PDF表格中找到字段名称。获取字段,然后阅读它们的值。
string pdfTemplate = "my.pdf";
PdfReader pdfReader = new PdfReader(pdfTemplate);
AcroFields fields = pdfReader.AcroFields.Fields;
string val = fields.GetField("fieldname");
显然,在上面的代码中,字段名是PDF形式字段的名称和getfield命令方法返回该值的字符串表示。 Here是一个带有可能使用的示例代码的文章。它展示了如何使用iTextSharp来读写表单字段。
如果你正在使用PowerShell中,用于场发现的代码是:
Add-Type -Path C:\Users\Micah\Desktop\PDF_Test\itextsharp.dll
$MyPDF = "C:\Users\Micah\Desktop\PDF_Test\something_important.pdf"
$PDFDoc = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList $MyPDF
$PDFDoc.AcroFields.Fields
该代码会给你的PDF文档,“something_important.pdf”的所有字段的名称。
这是一旦你知道该字段的名称,你如何访问每个字段:
$PDFDoc.AcroFields.GetField("Name of the field here")
这为我工作! 注意定义压模时的参数! '\ 0',true
string TempFilename = Path.GetTempFileName();
PdfReader pdfReader = new PdfReader(FileName);
//PdfStamper stamper = new PdfStamper(pdfReader, new FileStream(TempFilename, FileMode.Create));
PdfStamper stamper = new PdfStamper(pdfReader, new FileStream(TempFilename, FileMode.Create), '\0', true);
AcroFields fields = stamper.AcroFields;
AcroFields pdfFormFields = pdfReader.AcroFields;
foreach (KeyValuePair<string, AcroFields.Item> kvp in fields.Fields)
{
string FieldValue = GetXMLNode(XMLFile, kvp.Key);
if (FieldValue != "")
{
fields.SetField(kvp.Key, FieldValue);
}
}
stamper.FormFlattening = false;
stamper.Close();
pdfReader.Close()
也许iTextSharp库最近发生了变化,但我无法获得接受的工作答案。这里是我的解决方案:
var pdf_filename = "pdf2read.pdf";
using (var reader = new PdfReader(pdf_filename))
{
var fields = reader.AcroFields.Fields;
foreach (var key in fields.Keys)
{
var value = reader.AcroFields.GetField(key);
Console.WriteLine(key + " : " + value);
}
}
一个很细微的区别,由于reader.AcroFields.Fields返回一个IDictionary,而不是只是一个AcroFields的对象。
这可以工作,但速度很慢,需要花费一分钟才能读取〜3000字段。任何人都知道一个更快的方式来枚举这些?我试着平行做,但似乎没有帮助。 – DLeh 2016-10-18 04:47:00
PDF格式的名称是 “report.pdf” ..
数据字段读入TextBox1中的 “TextField25” 中的PDF ..
Dim pdf As String = "report.pdf"
Dim reader As New PdfReader(pdf)
Dim fields As AcroFields = reader.AcroFields
TextBox1.Text = fields.GetField("TextField25")
重要提示:这可以使用只有如果的PDF不扁平(意味着这些字段应该是可编辑的),而它是使用iTextSharp创建的。
即
pdfStamper.FormFlattening = False
这是非常简单的。而它的工作原理就像一个魅力.. :)
- 1. 如何使用itextsharp从PDF读取表格?
- 2. 使用iTextSharp的PDF表格
- 3. 如何用iTextSharp填充PDF表格?
- 4. 使用iTextSharp读取/修改PDF元数据
- 5. 使用iTextSharp阅读pdf表单数据:空值
- 6. 使用iTextSharp签署一个PDF表格
- 7. 在PDF中读表Itextsharp
- 8. 如何使用iTextSharp读取PDF文件夹
- 9. itextsharp读取表
- 10. 使用iTextSharp读取/修改PDF元数据而不向用户显示任何有关pdf属性的数据
- 11. 使用pdftools从PDF中读取表格
- 12. 如何使用带空格的itextsharp从pdf中提取文本?
- 13. 如何使用iTextSharp填写已填写的PDF表格
- 14. 如何使用iTextSharp将表格添加到现有的pdf
- 15. 如何使用XML和iTextSharp在PDF文档中创建表格?
- 16. iTextSharp - 用2列阅读PDF
- 17. 使用数据库值填充iTextSharp pdf
- 18. 如何使用Tabula将PDF表格提取到数据框中
- 19. 使用python读取表格数据
- 20. 使用iTextSharp从pdf中阅读javascript
- 21. iTextSharp的pdf阅读器不读PDF
- 22. 如何使用iText java读取PDF中的表格?
- 23. iTextSharp无法读取一些PDF文件
- 24. iTextSharp - 从pdf中读取证书
- 25. itextsharp pdf合并表单数据丢失
- 26. itextsharp multipage pdf格式
- 27. 如何使用ITextsharp将asp.net数据导出为PDF?
- 28. 如何使用itextsharp将动态数据添加到pdf标头
- 29. 如何从R读取PDF元数据
- 30. 如何使用Grails从SQL Developer中读取表格等数据?
这就像一个魅力...我不知道为什么我没有看过这个功能..当我尝试了其他所有功能:)。非常感谢..你救了我的周末。 – Bhuvan 2010-07-30 23:22:03
公共服务公告:以下代码不会得到你想要的:'pdfReader.AcroFields.Fields [“fieldName”] .value'。我在发现这篇文章之前浪费了几个小时。 – 2013-06-21 13:55:23
嗨。我认为你的例子的第三行有一个错误。 正确的形式是:'AcroFields fields = pdfReader.AcroFields;' – cesAR 2017-07-18 17:43:43