2013-03-28 131 views
3

我在阅读pdf文件中的表格时遇到问题。这是一个非常简单的pdf文件,包含一些文本和一个表格。我正在使用的工具是itextsharp。我知道PDF中没有表格概念。一些谷歌搜索后,有人说可能使用itextsharp +定制ITextExtractionStrategy来实现。但我不知道如何启动它。有人可以给我一些提示吗?或一小段示例代码?如何使用itextsharp从PDF读取表格?

干杯

+0

由于您没有提供样本PDF,因此只能在一般情况下回答您的问题。因此,如果你真的只想阅读一个特定的表格(或特定类型的表格),你可能想提供一个样本PDF来获得特定的答案。 – mkl 2013-03-28 11:20:06

+0

看到这篇文章和其中的链接http://stackoverflow.com/a/7515625/231316 – 2013-03-28 13:02:49

回答

1

这个代码仅仅是阅读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 
} 
2

该代码可用于读取表内容。所有的值都包含在()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(')')); 
    }