단락이나 청크와 같은 IText 객체에 pdf 파일 ("example.pdf")의 내용을 가져올 수있는 방법이 있습니까?Itext에서 PDF 파일 내용 얻기
나는 (다른 텍스트 중에서) 생성하고있는 새 PDF의 내용을 사용해야합니다.
단락이나 청크와 같은 IText 객체에 pdf 파일 ("example.pdf")의 내용을 가져올 수있는 방법이 있습니까?Itext에서 PDF 파일 내용 얻기
나는 (다른 텍스트 중에서) 생성하고있는 새 PDF의 내용을 사용해야합니다.
아니요, 적어도 쉽게.
iText가 청크 및 단락과이 모든 객체를 PDF (또는 다른 PDF 작성 프로그램의 해당 객체)에 넣으면 "여기부터 단락을 구성하는 단어"또는 "이 단어가 장을 구성합니다" 일반적으로 손실됩니다. 대신에 여러 개의 문자 그룹이 남아 있습니다. (알았어, 더 많은 정보가있을 수 있지만 거의 그렇지 않다.)
그래도 할 수있는 일은 예를 들어 클래스를 사용하여 PDF의 내용을 구문 분석하는 것입니다. iText 파서 패키지에서 그 위치에있는 글자 그룹을 검색하고 어떤 휴리스틱을 적용하여 어느 것이 단락이나 장을 형성하는지 짐작할 수 있습니다.
해당 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)를 사용하는 방법에 대한 많은 질문에 답했습니다.
생성하는 새 PDF에서 해당 내용을 사용해야한다고 가정 해보십시오. 당신의 사용은 얼마나 역동적입니까? 전체 페이지를 다시 사용합니까? 아니면 정말로 리플 로우 할 필요가 있습니까? 전자의 경우에는 기존 PDF를 조작하기위한 PdfStamper를 사용하십시오. – mkl