2015-02-01 2 views
0

pdfs에서 헤드 라인을 추출하려고합니다. 지금까지는 일반 텍스트를 읽으려고 시도했는데 첫 번째 행 (일반 텍스트에서는 헤드 라인이 시작 부분이 아니기 때문에 작동하지 않음)을 가져오고 영역에서 텍스트를 읽으려고 시도했습니다. 지역이 항상 동일하지는 않음).형식으로 PDF에서 텍스트 추출

가장 쉬운 방법은 내 생각에 텍스트를 특수 형식 (글꼴, 글꼴 크기 등)으로 읽는 것입니다. 이렇게하는 방법이 있습니까?

+2

PDF에서 텍스트를 추출하는 방법을 알려주지 않았습니다. iTextSharp를 사용하는 경우이 질문은 [itextpdf에서 위치 추출 전략을 적용한 후 텍스트 추출 전략을 사용할 수 있습니까?] (http://stackoverflow.com/questions/24506830/can-we-use-text- 추출 전략 - 적용 후 위치 추출 전략). 이 질문에서 누군가는 PDF에서 특정 텍스트를 필터링하기 위해 추출 된 텍스트의 글꼴을 검사하는 추가 추출 전략을 추가하고 있습니다. –

+0

*이 작업을 수행 할 수있는 방법이 있습니까? * - PDF 라이브러리를 선택해야합니다. 텍스트 추출을 허용하는 모든 PDF 라이브러리는 글꼴이나 크기에 의한 텍스트 추출도 허용해야합니다. – mkl

+0

솔루션을 위해 실제로 중요하지 않기 때문에 저는 어떻게하고 있는지 말하지 않을 것입니다. 이 경우 사용 된 라이브러리를 변경해도 상관 없습니다. (저는 PdfSharp와 PDFBox를 사용했습니다. 둘 다이 가능성을 갖고 있지는 않습니다 ...) – derBasti

답변

1

Docotic.Pdf library을 사용하여 PDF 페이지의 모든 텍스트 개체를 열거 할 수 있습니다. 각 텍스트 객체에 대해 글꼴 및 객체 크기에 대한 정보를 사용할 수 있습니다. 아래는 샘플입니다

public static void listTextObjects(string inputPdf) 
{ 
    using (PdfDocument pdf = new PdfDocument(inputPdf)) 
    { 
     string format = "{0}\n{1}, {2}px at {3}"; 

     foreach (PdfPage page in pdf.Pages) 
     { 
      foreach (PdfPageObject obj in page.GetObjects()) 
      { 
       if (obj.Type != PdfPageObjectType.Text) 
        continue; 

       PdfTextData text = (PdfTextData)obj; 

       string message = string.Format(format, text.Text, text.Font.Name, 
        text.Size.Height, text.Position); 
       Console.WriteLine(message); 
      } 
     } 
    } 
} 

코드합니다 입력 PDF 파일의 각 페이지에 각 텍스트 개체에 대해 다음과 같은 출력 라인.

FACTUUR 
Helvetica-BoldOblique, 19.04px at { X=51.12; Y=45.54 } 

당신은 헤드 라인을 포맷하는 데 사용되는 다른 특성을 가진 가장 큰 텍스트 또는 굵은 텍스트 또는 텍스트를 찾을 수있는 검색 정보를 사용할 수 있습니다.

당신의 PDF는 당신이 더 간단한 방법

GetTextWithFormatting 방법은 읽기 순서에 텍스트를 반환
public static void printText(string inputPdf) 
{ 
    using (PdfDocument pdf = new PdfDocument(inputPdf)) 
    { 
     foreach (PdfPage page in pdf.Pages) 
     { 
      string text = page.GetTextWithFormatting(); 
      Console.WriteLine(text); 
     } 
    } 
} 

(즉 왼쪽 상단에서 우측 하단에를 사용할 수있는 것보다 페이지의 맨 위 텍스트로 헤드 라인을 보장하는 경우 위치).

면책 조항 : 나는 도서관의 개발자입니다.