我想知道是否可以使用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