2014-06-15 4 views
0

머리글과 바닥 글이 있지만 몸에 2 개의 열이있는 PDF를 읽는 데 문제가 있습니다.iTextSharp - 2 열로 PDF 읽기

이미 헤더의 열 너비와 높이가 있지만 열이있는 페이지를 읽는 코드가 필요합니다.

누구든지 나에게 PDF 열을 읽는 코드를 제공 할 수 있습니까?

당신을 감사

답변

1

그것은 당신이 컬럼의 위치를 ​​모른다면 당신이 원하는 것을 달성하기 매우 어렵습니다,하지만 당신은 이미 열 너비와 높이를 가지고 "라고 때문에 당신은 그것의 좌표가 있다고 가정 ". 이 경우, 귀하의 질문에 유래에 게시이 다른 질문에서 해당 다르지 않다 :

RenderFilter[] filter = {new RegionTextRenderFilter(rect)}; 
ITextExtractionStrategy strategy = new FilteredTextRenderListener(
    new LocationTextExtractionStrategy(), filter); 
String single_column = PdfTextExtractor.GetTextFromPage(reader, i, strategy)); 
: iTextSharp read from specific position

rect이 컬럼의 위치에 해당하는 Rectangle이라고 가정에, 당신은이 코드가 필요합니다

이제 단일 열에 텍스트가 있습니다. 페이지의 모든 열에 대해이 작업을 반복해야합니다.

추가 코멘트 다음 RegionTextRenderFilter를 사용하여 대부분의 경우 동안은 (있는 열은 단순히 라인에 추가 공간 문자를 삽입하여 생성), 몇 가지 경우를 잘 작동에 처리하기 위해 텍스트 덩어리를 분할해야 할 수도 전진. 예를 들어, this answer에서 TextRenderInfoSplitter을 사용하고 FilteredTextRenderListener을 입력하면됩니다. (이 코멘트는 mkl에 의해 제공되었습니다.)

+1

대부분의 경우 'RegionTextRenderFilter'를 사용하면 문제가 없지만 줄에 공백 문자를 삽입하여 생성되는 몇 가지 경우에는 텍스트 청크가 미리 처리됩니다. 예를 들어, [이 답변] (http://stackoverflow.com/questions/21000256/pdf-reading-highlighed-text-highlight-annotations-using-c-sharp/21023311#21023311)의'TextRenderInfoSplitter'를 사용하고' FilteredTextRenderListener'를 호출합니다. – mkl

+0

좋은 발언, mkl, 나는 대답에 당신의 의견을 추가 할 것입니다. –

+0

감사 브루노, 하지만이 전략은 double \ n의 텍스트를 \ n 단일 문자로 변경합니다. 그리고 SimpleTextExtractionStrategy()에서 수행 된 것과 같이 \ n의 두 배가 필요합니다. double \ n을 잃지 않고 사각형을 어떻게 사용할 수 있는지 알고 계십니까? –