2009-04-15 2 views
0

PDF 페이지에서 단락 및/또는 텍스트 블록을 구성하는 직사각형을 검색하려고합니다.PDF 단락 또는 텍스트 블록 위치

iTextSharp와 DataLogics를 살펴 보았습니다.

제가 할 수 있었던 최선은 개별 단어를 찾는 것입니다. 그러나 단어가 동일한 텍스트 블록에 있는지 알아야합니다.

저는 C#을 사용하고 있습니다. 아무도 아이디어가 있니?

답변

0

이것은 Java이지만 PDF에서 내용을 가져 와서 내용의 색인에서 값을 가져 오는 것을 다룹니다.

잘 모르겠습니다 만 C#에서 비슷한 것을 얻을 수 있습니다. 콘텐츠를 가져 와서 인쇄하십시오.

//create a new reader from the source file 
PdfReader reader = new PdfReader(fileName); 
//create the file array 
RandomAccessFileOrArray raf = new RandomAccessFileOrArray(fileName); 
//get the content of the pdf reader (which is the source file) 
byte bContent [] = reader.getPageContent(1,raf); 
ByteArrayOutputStream bs = new ByteArrayOutputStream(); 
bs.write(bContent); 
//create a string of the contents of the page in order to get the data needed 
String contentOf1099 = bs.toString(); 
if(debug) 
{ 
    System.err.println("contentOf1099 = "+contentOf1099); 
} 
//get the value based off an index 
String value = contentOf1099.substring(contentOf1099.indexOf((",contentOf1099.indexOf("155 664 Td"))+1,contentOf1099.indexOf("(",contentOf1099.indexOf("155 664 Td "))+12); 
+0

birdlips, 그 마지막 줄 정말 내게 문제가되고있다. 나 한테 그걸 깰 수있어? – Dave

+0

확실히, 기본적으로 내가 말하는 것은 "155 664 Td의 색인에서 다음 12자를 구하십시오"입니다. PDF의 모든 항목에는 정의 된 정렬 주소가있는 "위치"가 있습니다. pdf의 내용을 인쇄하면 사각형 안에 무엇이 있는지 확인할 수 있습니다. – northpole

1

구조화 된 PDF가 없으면 이것은 존재하지 않을 것입니다. PDF는 위치에 drawString 명령 세트입니다. 단락이나 공백 마커가 없습니다. 텍스트 위치에서이 작업을해야합니다.

0

페이지의 각 단어의 모든 좌표를 추출한 다음 함께 그룹화하십시오.

먼저 할 일은 줄로 묶는 것입니다. 이렇게하려면 모든 순서 단어로 모든 단어를 반복하고 y0가 다른 단어의 y1보다 작은 단어를 그룹화하려면, y1은 다른 단어의 y0보다 큽니다. 이들은 라인입니다.

그런 다음 단락으로 줄을 그룹화해야합니다. 선의 x 위치는 다른 페이지 너비의 1/25 이내에 있어야합니다. 그리고 선의 y 좌표 사이의 거리는 선의 높이보다 작아야합니다. 이것들은 단락들입니다.