使用itextpdf强化合理的pdf文本

时间:2014-03-10 22:45:35

标签: java pdf itextpdf

我试图用itextpdf在pdf中强调合理的测试,我想我已经发现了一个错误,我真的很想解决这个问题。

当我按照mailing lists所述调用getBaseline()时,下划线延伸远远超过文本的末尾进入下一列。

        float lx = renderInfos.get(i).getBaseline().getStartPoint().get(0);
        float rx = renderInfos.get(i).getBaseline().getEndPoint().get(0);

enter image description here

您可以从pdf

下载原始publisher's website

谢谢!

我已经在我尝试过的所有版本的itextpdf上看到了这一点,从4.1.0到最近的5.5.0

将下划线代码与我无法分享的其他专有代码分开需要花费一些精力。如果您认为这会有所帮助,我可以这样做。

如果这是一个错误,是否有问题跟踪器我可以用它来记录?

PS(mkl):这是一个重现问题的简短代码片段:

PdfReader reader = new PdfReader(...);

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(...));

for (int page = 1; page <= reader.getNumberOfPages(); page++)
{
    final List<TextRenderInfo> infos = new ArrayList<TextRenderInfo>();
    PdfTextExtractor.getTextFromPage(reader, page, new TextExtractionStrategy()
    {
        public void renderText(TextRenderInfo renderInfo)
        {
            infos.add(renderInfo);
        }

        public void renderImage(ImageRenderInfo renderInfo) { }
        public void endTextBlock() { }
        public void beginTextBlock() { }
        public String getResultantText() { return "";}
    });

    PdfContentByte content = stamper.getOverContent(page);
    for (TextRenderInfo info : infos)
    {
        float lx = info.getBaseline().getStartPoint().get(0);
        float rx = info.getBaseline().getEndPoint().get(0);
        float y = info.getBaseline().getEndPoint().get(1);
        content.moveTo(lx, y);
        content.lineTo(rx, y);
        content.stroke();
    }
}

stamper.close();

0 个答案:

没有答案