我遇到坐标问题。 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文档中提取块,并希望根据其坐标绘制矩形。我得到正确的宽度和高度,但正如你所提到的,最后的矩形是垂直移动的:块的第一行不包含在矩形中。 有什么窍门可以避免这种情况? – 2012-07-16 12:22:57
@NicolasW。 Pdfbox在猜测文本的实际位置与开始位置相反时存在问题 - 因此,如果文本在矩形外部开始并在文本内部流动,则可能无法捕获文本。诀窍是尝试一个稍大的捕获区域,以捕获在当前捕获区域之外开始的文本。我没有找到比这更聪明的东西。 – ipavlic 2012-07-16 12:33:09
好的,谢谢,我会看看我能做些什么:) – 2012-07-16 12:35:52