좌표 관련 문제가 있습니다. PDFTextStripperByArea 영역이 너무 높게 보인다.Pdfbox PDFTextStripperByArea 좌표가 이동했습니다.
다음 예제 조각을 고려하십시오
...
PDPage page = (PDPage) allPages.get(0);
PDFTextStripperByArea stripper = new PDFTextStripperByArea();
// define region for extraction -- the coordinates and dimensions are x, y, width, height
Rectangle2D.Float region = new Rectangle2D.Float(x, y, width, height);
stripper.addRegion("test region", region);
// overlay the region with a cyan rectangle to check if I got the coordinates and dimensions right
PDPageContentStream contentStream = new PDPageContentStream(document, page, true, true);
contentStream.setNonStrokingColor(Color.CYAN);
contentStream.fillRect(x, y, width, height);
contentStream.close();
// extract the text from the defined region
stripper.extractRegions(page);
String content = stripper.getTextForRegion("test region");
...
document.save(...); ...
시안 사각형 멋지게 원하는 영역을 오버레이. 반면에, 스트리퍼는 직사각형의 아래쪽에 두 줄을 놓치고 직사각형 위의 몇 줄을 포함합니다. "위쪽으로"(y 좌표만큼) 이동 한 것처럼 보입니다. 무슨 일 이니?
안녕하세요. 거의 같은 문제가 있습니다. PDF 문서에서 블록을 추출하고 좌표에 따라 직사각형을 그립니다. 올바른 너비와 높이를 얻지 만 앞에서 설명한대로 최종 사각형은 수직으로 이동합니다. 블록의 첫 번째 줄은 사각형에 포함되지 않습니다. 이를 피하기위한 트릭이 있습니까? –
@ NicolasW. Pdfbox는 실제로 텍스트가 시작되는 위치와 반대되는 위치를 추측하는 데 문제가 있습니다. 텍스트가 사각형 외부에서 시작되어 그 내부로 흐를 경우 캡처되지 않을 수 있습니다. 트릭은 약간 큰 캡처 영역을 시도하여 현재 캡처 영역 외부에서 시작하는 텍스트를 캡처하는 것입니다. 나는 그보다 더 똑똑한 것을 찾지 못했습니다. – ipavlic
그래, 고마워, 내가 뭘 할 수 있는지 알 겠어. –