2012-10-21 3 views
0

단락이나 청크와 같은 IText 객체에 pdf 파일 ("example.pdf")의 내용을 가져올 수있는 방법이 있습니까?Itext에서 PDF 파일 내용 얻기

나는 (다른 텍스트 중에서) 생성하고있는 새 PDF의 내용을 사용해야합니다.

+0

생성하는 새 PDF에서 해당 내용을 사용해야한다고 가정 해보십시오. 당신의 사용은 얼마나 역동적입니까? 전체 페이지를 다시 사용합니까? 아니면 정말로 리플 로우 할 필요가 있습니까? 전자의 경우에는 기존 PDF를 조작하기위한 PdfStamper를 사용하십시오. – mkl

답변

1

아니요, 적어도 쉽게.

iText가 청크 및 단락과이 모든 객체를 PDF (또는 다른 PDF 작성 프로그램의 해당 객체)에 넣으면 "여기부터 단락을 구성하는 단어"또는 "이 단어가 장을 구성합니다" 일반적으로 손실됩니다. 대신에 여러 개의 문자 그룹이 남아 있습니다. (알았어, 더 많은 정보가있을 수 있지만 거의 그렇지 않다.)

그래도 할 수있는 일은 예를 들어 클래스를 사용하여 PDF의 내용을 구문 분석하는 것입니다. iText 파서 패키지에서 그 위치에있는 글자 그룹을 검색하고 어떤 휴리스틱을 적용하여 어느 것이 단락이나 장을 형성하는지 짐작할 수 있습니다.

0

해당 C# 코드가 있지만 너무 자바에서 작동해야합니다. 자바에 네임 스페이스 iTextSharp.text.pdf.parser;는 약간의 defferent을 보이지만, .parse

Rectangle rect = new Rectangle(48.031496063f, 643.307086614f, 198.42519685f + 68.031496063f, 70.866141732f + 663.307086614f); 
RenderFilter f = new RegionTextRenderFilter(rect); 
List<RenderFilter> fi = new List<RenderFilter>(); 
fi.Add(f); 
ITextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), fi.ToArray()); 
//on java it should be: ITextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), f); 
sw.WriteLine(PdfTextExtractor.GetTextFromPage(reader, 1, strategy)); 

객체 rect 당신이 OCR하고자하는 영역입니다해야합니다. 모든 텍스트는 pdf에 표시된 텍스트와 매우 유사한 txt 파일에 저장해야합니다. iText의 OCR에 대한 더 자세한 정보는 Bruno Lowagie의 "iText in action, 2nd edition"15.3 절을 참조하십시오.

면책. 나는 브루노와 아무 상관이 없다. 단지 그의 책을 읽었을 뿐이다. iText (Sharp)를 사용하는 방법에 대한 많은 질문에 답했습니다.