如何使用iText相对于页面定位文本?

时间:2013-07-03 04:09:29

标签: java pdf itext

如何设置文本的位置,使其相对于页面大小垂直居中?我想把它定位为例如右边的x个点并垂直居中。当然文本旋转了90度。

            int n = reader.getNumberOfPages();
            PdfImportedPage page;
            PdfCopy.PageStamp stamp;
            for (int j = 0; j < n; )
            {
                ++j;
                page = writer.getImportedPage(reader, j);
                stamp = writer.createPageStamp(page);
                Rectangle crop = reader.getCropBox(1);
                // add overlay text
                Phrase phrase = new Phrase("Overlay Text");
                ColumnText.showTextAligned(stamp.getOverContent(), Element.ALIGN_CENTER, phrase,
                        crop.getRight(72f), crop.getHeight() / 2, 90);
                stamp.alterContents();
                writer.addPage(page);
            }

上面的代码给出了文本的不一致位置,在某些页面中,只有一部分“叠加文本”可见。请帮助,我不知道如何正确使用mediabox和cropbox,我是itext的新手。

谢谢!

1 个答案:

答案 0 :(得分:2)

关于不一致的位置:应该通过添加垂直偏移来修复:

crop.getRight(72f), crop.getBottom() + crop.getHeight() / 2
你知道吗?您使用1英寸边距的右边框作为x坐标,但是您忘记考虑页面底部的y坐标(它并不总是0)。通常,这应该可以解决定位问题。

关于只有部分叠加文字可见的事实:我的第一个猜测是你在现有内容下添加内容,但这种猜测是错误的(你正在使用getOverContent())。第二个问题到底是什么意思?你的意思是文章被CropBox裁剪了吗?您是否正在寻找一种方法来衡量phrase的内容,以便在添加之前确定它是否适合高度?