如何使用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的新手。

谢谢!

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

 crop.getRight(72f), crop.getBottom() + crop.getHeight() / 2 

你有看到? 您使用1英寸边距的右边框作为x坐标,但是您忘记考虑页面底部的y坐标(它并不总是0 )。 通常,这应该解决定位问题。

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