2013-07-19 6 views
0

나는 PdfTextStripper (PDFBox 1.8.2)를 사용하여 pdf 파일의 모든 TextPosition을 처리하고 있습니다. 나는 많은 파일들에 대해 테스트를 해왔고 독서 주문서에서 텍스트를 처리하는 것으로 나타났습니다. 그러나, pdf에 꼬리말 (pdf로 내 보낸 docx)이 있으면 좋지 않습니다. pdfTextStripper는 바닥 글을 먼저 처리 한 다음 파일의 본문을 처리합니다.PDFBox- PDFTextStripper의 processTextPosition을 사용한 읽기 순서입니까?

이 예상되는 동작입니까? 주문을 지정할 수있는 방법이 있습니까? 또는 바닥 글을 식별 할 수있는 방법이 있습니까? 그리고 코드에서 조정할 수 있습니까?

답변

3

PdfTextStripper는 속성 SortByPosition (getSortByPosition & setSortByPosition)을 갖는다. 기본적으로 false입니다.

이 속성이 false, 인 경우 PdfTextStripper은 PDF 페이지 콘텐츠 스트림에 나타나는 순서대로 텍스트를 추출합니다.

콘텐츠 순서에서 다음 인쇄 된 텍스트를 페이지의 원하는 위치에 배치 할 수있는 연산자를 사용하기 때문에이 순서가 완전히 엉망이 될 수 있지만 함께있는 텍스트 섹션은 함께 유지됩니다 (이러한 섹션에 필요한 작업이 자주 그 스트림에 블록으로서 삽입된다).

그러나 머리글과 바닥 글은 동시에 추가되기 때문에 본문 텍스트 앞뒤에 함께 표시됩니다.

이 속성이 true, 인 경우, PdfTextStripper은 본질적으로 위에서 아래로, 왼쪽에서 오른쪽으로 텍스트를 추출합니다 (읽기 순서가 오른쪽에서 왼쪽으로 정의되지 않은 경우). (좋아, 좋아, 그것은 또한 문서 구슬을 존중하지만, 거의 그들에 일반적으로 사용되는 셀 수 있습니다.)

이 순서는 한 열 텍스트의 경우에 좋은, 그리고 헤더 마지막 처음 와서 바닥 글,하지만하지 않는 한 적절한 기사 구슬이 사용되며, 다중 열 페이지가 엉망이됩니다.

BTW, 당신은 속성 ShouldSeparateByBeads (getSeparateByBeads & setShouldSeparateByBeads)를 사용하여 문서 구슬의 사용을 해제 할 수 있습니다.