2013-03-28 433 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(')')); 
    } 
相關問題