2017-01-25 6 views
1

나는 C#에서 구문 분석하려는 PDF 파일에 이름, 이름, 출생지 및 거주지가있는 사용자 정의 테이블이 있습니다.PDF 파일의 테이블을 구문 분석하려면 어떻게해야합니까?

using (PdfLoadedDocument document = new PdfLoadedDocument("foobar")) 
{ 
    for (var i = 0; i < document.Pages.Count; i++) 
    { 
     Console.WriteLine($"============ PAGE NO. {i+1} ============"); 
     Console.WriteLine(document.Pages[i].ExtractText()); 
    } 
} 

그러나 문제는 출력이다 : 그것을하는 가장 간단한 방법 중 하나가 될 것 내가 정규식이 분리해서 수있는 방법은 없습니다

============ PAGE NO. 38 ============ 
John L.SmithSan Francisco5400 Baden 

그래서 난을 통해 분석 할 수있는 방법이 필요 각 행의 각 열은 고객의 모든 값을 구분합니다. 어떻게하면 syncfusion을 사용하여 pdf 파일의 테이블을 파싱 할 수 있습니까?

+0

당신이'... (사실) ExtractText'사용하여 시도 유무 :

내가 무엇을 원하지만이 자바 프로젝트입니다 않는 클래스를 썼다? – DavidG

+0

@DavidG 슬프게도, 'ExtractText()'는 매개 변수를 취하지 않습니다. – SovietPanda

+1

정말요? [docs] (http://help.syncfusion.com/cr/cref_files/wpf/pdf/Syncfusion.Pdf.Base~Syncfusion.Pdf.PdfPageBase~ExtractText (Boolean) .html)는 다르게 말합니다. – DavidG

답변

0

PDF 문서에있는 내용의 구조에 따라 PDF 문서에서 텍스트를 추출하는 Syncfusion 컨트롤입니다. 따라서 Syncfusion 컨트롤의 현재 구현을 기반으로 PDF 문서의 테이블에있는 행과 열을 인식 할 수 없습니다.

또한 PDF 문서에있는 내용이 고정 레이아웃을 따르므로 Syncfusion 컨트롤을 사용하여 표시된 PDF 문서와 동일한 순서로 텍스트를 추출 할 수 없습니다.

하지만 Tabula (오픈 소스 라이브러리)를 사용하여 Excel에서 PDF 문서의 테이블을 채울 수 있습니다. 귀하의 요구 사항에 따라 PDF 문서에서 레이아웃 기반의 텍스트 추출을 수행하기 위해 Tabula java (오픈 소스)를 수정했습니다.

http://www.syncfusion.com/downloads/support/directtrac/171585/ze/TextExtractionSample649531336

친절하게 샘플을 실행하기 전에 다음 사항을 확인하십시오 :

아래 링크에서이 구현을위한 샘플을 찾아주세요

  1. 설치 아래에서 자바 런타임 환경 (JRE) 링크.
    http://www.oracle.com/technetwork/java/javase/downloads/
  2. 컴퓨터를 다시 시작하십시오.
  3. 위의 샘플을 실행하십시오.

귀하의 요구 사항을 충족하는지 확인하십시오.

1

pdf에있는 각 문자의 좌표를 반환하는 방법이 필요합니다. 그런 다음 문자가 단어의 일부인지, 단어 자체가 x-ax에 따라 위치하는지 알아보기 위해 수행 할 수학 (기본적으로 문자 사이의 거리를 계산)이 있습니다. 그것은 많은 노력과 노력이 필요하며 syncfusion 문서에서 그런 방법을 찾지 못했습니다. PDFLayoutTextStripper (upon PDFBox)