我在閱讀pdf文件中的表格時遇到問題。這是一個非常簡單的pdf文件,包含一些文本和一個表格。我正在使用的工具是itextsharp。我知道PDF中沒有表格概念。一些谷歌搜索後,有人說可能使用itextsharp +定製ITextExtractionStrategy來實現。但我不知道如何啓動它。有人可以給我一些提示嗎?或一小段示例代碼?如何使用itextsharp從PDF讀取表格?
乾杯
我在閱讀pdf文件中的表格時遇到問題。這是一個非常簡單的pdf文件,包含一些文本和一個表格。我正在使用的工具是itextsharp。我知道PDF中沒有表格概念。一些谷歌搜索後,有人說可能使用itextsharp +定製ITextExtractionStrategy來實現。但我不知道如何啓動它。有人可以給我一些提示嗎?或一小段示例代碼?如何使用itextsharp從PDF讀取表格?
乾杯
這個代碼僅僅是閱讀PDF文件,你需要的
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
從DLL itextsharp.dll
var pdfReader = new PdfReader(_filePath);
for (int i = 0; i < pdfReader.NumberOfPages; i++)
{
var locationTextExtractionStrategy = new LocationTextExtractionStrategy();
string textFromPage = PdfTextExtractor.GetTextFromPage(pdfReader, i + 1, locationTextExtractionStrategy);
textFromPage = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(textFromPage)));
//Do Something with the text
}
該代碼可用於讀取表內容。所有的值都包含在()Tj中,所以我們查找所有值,然後使用字符串resulst執行任何操作。
string _filePath = @"~\MyPDF.pdf";
public List<String> Read()
{
var pdfReader = new PdfReader(_filePath);
var pages = new List<String>();
for (int i = 0; i < pdfReader.NumberOfPages; i++)
{
string textFromPage = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, pdfReader.GetPageContent(i + 1)));
pages.Add(GetDataConvertedData(textFromPage));
}
return pages;
}
string GetDataConvertedData(string textFromPage)
{
var texts = textFromPage.Split(new[] { "\n" }, StringSplitOptions.None)
.Where(text => text.Contains("Tj")).ToList();
return texts.Aggregate(string.Empty, (current, t) => current +
t.TrimStart('(')
.TrimEnd('j')
.TrimEnd('T')
.TrimEnd(')'));
}
由於您沒有提供樣本PDF,因此只能在一般情況下回答您的問題。因此,如果你真的只想閱讀一個特定的表格(或特定類型的表格),你可能想提供一個樣本PDF來獲得特定的答案。 – mkl 2013-03-28 11:20:06
看到這篇文章和其中的鏈接http://stackoverflow.com/a/7515625/231316 – 2013-03-28 13:02:49