如何设置文本的位置,使其相对于页面大小垂直居中?我想把它定位为例如右边的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的新手。
谢谢!
答案 0 :(得分:2)
关于不一致的位置:应该通过添加垂直偏移来修复:
crop.getRight(72f), crop.getBottom() + crop.getHeight() / 2
你知道吗?您使用1英寸边距的右边框作为x
坐标,但是您忘记考虑页面底部的y
坐标(它并不总是0
)。通常,这应该可以解决定位问题。
关于只有部分叠加文字可见的事实:我的第一个猜测是你在现有内容下添加内容,但这种猜测是错误的(你正在使用getOverContent()
)。第二个问题到底是什么意思?你的意思是文章被CropBox裁剪了吗?您是否正在寻找一种方法来衡量phrase
的内容,以便在添加之前确定它是否适合高度?