【发布时间】:2020-01-26 16:22:11
【问题描述】:
文件示例:click here
使用来自this 主题的出色解决方案,我尝试提取可见文本。附加文档的文本非常小,这可能会导致此剪辑路径问题,其中某些字母可能会被隐藏。对于这样的旋转文本,我稍微更改了链接问题的代码:
@Override
protected void processTextPosition(TextPosition text) {
PDGraphicsState gs = getGraphicsState();
Vector center = getTextPositionCenterPoint(text);
Area area = gs.getCurrentClippingPath();
if (area == null || area.contains(lowerLeftX + center.getX(), lowerLeftY + center.getY())) {
nonStrokingColors.put(text, gs.getNonStrokingColor());
renderingModes.put(text, gs.getTextState().getRenderingMode());
super.processTextPosition(text);
}
}
private Vector getTextPositionCenterPoint(TextPosition text) {
Matrix textMatrix = text.getTextMatrix();
Vector start = textMatrix.transform(new Vector(0, 0));
Vector center = null;
switch (rotation) {
case 0:
center = new Vector(start.getX() + text.getWidth()/2, start.getY());
break;
case 90:
center = new Vector(start.getX(), start.getY() + text.getWidth()/2);
break;
case 180:
center = new Vector(start.getX() - text.getWidth()/2, start.getY());
break;
case 270:
center = new Vector(start.getX(), start.getY() - text.getWidth()/2);
break;
default:
center = new Vector(start.getX() + text.getWidth()/2, start.getY());
break;
}
return center;
}
我正在尝试做的 - 根据旋转获取字符 X 中心点(我知道有时这不起作用,因为文本方向,但这里看起来不是这种情况) 但是在应用此解决方案后,由于剪辑路径,我跳过了底部的第 2 行、第 3 行和其他一些行。 我想知道我的错误在哪里。 提前致谢!
【问题讨论】: