我使用以下代码获取每个角色的元数据
PDFTextStripper stripper = new PDFTextStripper()
{
@Override
protected void processTextPosition(TextPosition text)
{
System.out.println(text.toString()+" : " + text.getX() +" : " +text.getY());
}
}
以上代码工作正常。 现在,我已经裁剪了pdf的一部分并保存了它。如果我在这个裁剪的PDF上应用了相同的逻辑,那么它将提供父PDF中所有字符的元数据。
请建议我如何获取只有裁剪PDF格式的字符元数据。
提前致谢。
答案 0 :(得分:0)
裁剪的PDF页面本质上是一个PDF页面,其中定义了裁剪框,即画布上的矩形,而PDF查看器知道它们只能在该框内显示内容。
如果您在文本提取过程中想要尊重裁剪框,则只需按坐标进行过滤即可。对于简单的文本提取,您可以使用PDFTextStripperByArea
并使用其getTextForRegion
方法。
由于您不是简单地接受文本剥离器返回的字符串,而是通过重载在该类完成过滤之前调用的方法来注入代码,因此您必须自己过滤。
请注意,您需要根据PDF页面坐标系进行过滤,而不是根据页面旋转进行调整后的PDFTextStripper
坐标,以便左上角为0,0 。这意味着您必须使用<{p}} {/ 1}
TextPosition text
而不是text.getTextMatrix().getTranslateX(), text.getTextMatrix().getTranslateY()
。