2013-03-28 2 views
3

pdf 파일에서 테이블을 읽는 데 문제가 있습니다. 그것은 텍스트와 테이블이있는 매우 간단한 pdf 파일입니다. 내가 사용하는 도구는 itextsharp입니다. PDF에 테이블 개념이 없다는 것을 알고 있습니다. 인터넷 검색을 한 후에 누군가가 itextsharp + custom ITextExtractionStrategy를 사용하여이를 달성 할 수 있다고 말했다. 하지만 어떻게 시작해야할지 모르겠습니다. 누군가 나에게 힌트를 주실 수 있습니까? 또는 작은 샘플 코드? PDF 파일을 읽을 단지에 대한itextsharp를 사용하여 PDF에서 테이블을 읽는 방법?

건배

+0

샘플 PDF를 제공하지 않았으므로 일반적인 질문에만 답변 할 수 있습니다. 따라서 특정 표 (또는 특정 종류의 표)를 읽으려는 경우 샘플 PDF를 제공하여 구체적인 답변을 얻을 수 있습니다. – mkl

+0

이 게시물 및 링크를 참조하십시오. http://stackoverflow.com/a/7515625/231316 –

답변

1

이 코드는 DLL에서

using iTextSharp.text.pdf; 
using iTextSharp.text.pdf.parser; 

이 코드는 테이블을 읽기위한 것입니다

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

itextsharp.dll해야한다 함유량. 모든 값은() 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(')')); 
    } 
관련 문제