如何使用PDFBox获取裁剪PDF的元数据

时间:2016-11-18 07:14:39

标签: java pdfbox

我使用以下代码获取每个角色的元数据

PDFTextStripper stripper = new PDFTextStripper()
{
    @Override
    protected void processTextPosition(TextPosition text)
    {
        System.out.println(text.toString()+" : " + text.getX() +" : " +text.getY());

    }
}

以上代码工作正常。 现在,我已经裁剪了pdf的一部分并保存了它。如果我在这个裁剪的PDF上应用了相同的逻辑,那么它将提供父PDF中所有字符的元数据。

请建议我如何获取只有裁剪PDF格式的字符元数据。

提前致谢。

1 个答案:

答案 0 :(得分:0)

裁剪的PDF页面本质上是一个PDF页面,其中定义了裁剪框,即画布上的矩形,而PDF查看器知道它们只能在该框内显示内容。

如果您在文本提取过程中想要尊重裁剪框,则只需按坐标进行过滤即可。对于简单的文本提取,您可以使用PDFTextStripperByArea并使用其getTextForRegion方法。

由于您不是简单地接受文本剥离器返回的字符串,而是通过重载在该类完成过滤之前调用的方法来注入代码,因此您必须自己过滤。

请注意,您需要根据PDF页面坐标系进行过滤,而不是根据页面旋转进行调整后的PDFTextStripper坐标,以便左上角为0,0 。这意味着您必须使用<{p}} {/ 1}

TextPosition text

而不是text.getTextMatrix().getTranslateX(), text.getTextMatrix().getTranslateY()