通过itext找出pdf页面的内容百分比

时间:2018-02-05 14:26:14

标签: .net pdf itext

我如何知道使用itext有多少页面是文本?即文本占整个页面的50%?或25%?有没有办法可以得到文本结束的Y坐标?那么你就知道在哪里写下一段文字了。

谢谢

1 个答案:

答案 0 :(得分:0)

这绝对不是微不足道的。 但最简单的实现(做出很多假设)有点像这样:

class TextMeasurementListener implements IEventListener {

    private float space = 0.0f;

    public TextMeasurementListener(PdfDocument pdfDocument, int pageNr)
    {
        new PdfDocumentContentParser(pdfDocument).processContent(pageNr, this);
    }

    @Override
    public void eventOccurred(IEventData data, EventType type) {
        if(type != EventType.RENDER_TEXT)
            return;

        TextRenderInfo textRenderInfo = (TextRenderInfo) data;
        for(TextRenderInfo charInfo : textRenderInfo.getCharacterRenderInfos())
        {
            CharacterRenderInfo characterRenderInfo = new CharacterRenderInfo(charInfo);
            space += characterRenderInfo.getBoundingBox().getWidth() * characterRenderInfo.getBoundingBox().getHeight();
        }
    }

    public float getReservedSpaceInPoints()
    {
        return space;
    }

    @Override
    public Set<EventType> getSupportedEvents() {
        return null;
    }
}

此方法实际上处理单个页面,并计算每个字符的每个边界框的区域。