如何使用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
的内容,以便在添加之前查看它是否适合高度?