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

Java 如何使用iText相对于页面定位文本?,java,pdf,itext,Java,Pdf,Itext,如何设置文本的位置,使其相对于页面大小垂直居中?我想定位它,比如说,从右边垂直居中x个点。文本当然会旋转90度 int n = reader.getNumberOfPages(); PdfImportedPage page; PdfCopy.PageStamp stamp; for (int j = 0; j < n; ) { ++j;

如何设置文本的位置,使其相对于页面大小垂直居中?我想定位它,比如说,从右边垂直居中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);
            }
int n=reader.getNumberOfPages();
PDF导入页面;
PdfCopy.PageStamp;
对于(int j=0;j
上面的代码给出了不一致的文本位置,在某些页面中,只有部分“覆盖文本”可见。请帮忙,我不知道如何正确使用mediabox和cropbox,而且我对itext还不熟悉


谢谢

关于不一致的位置:应通过添加垂直偏移来固定:

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


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

文本不可见,在某些情况下会移动。我只想知道x,y坐标,这样我就可以将覆盖文本定位在相对于pdf页面的相同位置,即垂直居中,并且应该靠近页面可见区域的边缘(左侧或右侧)。一些PDF具有不同的页面大小。在这种情况下,公式是什么?谢谢。我不是已经回答了那个问题吗?如果
crop
是定义CropBox(如果存在)或MediaBox(如果没有CropBox)的
矩形,则
x=crop.getRight()+xPos
y=crop.getBottom()+crop.getHeight()/2
,其中
xPos
定义了文本从右边框开始以用户单位计算的偏移量。根据您在此处的帖子:,您说“当您在绝对位置添加内容时,如果原点的(x,y)值与(0,0)不同,则需要将其考虑在内。”。否则,您可能会在错误的位置添加内容,甚至可能在页面的可见区域之外。”如果我没有做到这一点,我诚挚的道歉。我尝试了
crop.getRight()+xPos,crop.getBottom()+crop.getHeight()/2
但是我想添加的内容的位置仍然不一致。谢谢@bruno lowagie。请查看此生成的pdf:。覆盖文本与第1-3页和第20-21页一致,但在其余页面的可见区域之外。希望你能帮助我。再次提前感谢。非常感谢您抽出时间指出我忽略的内容。我将尝试通过尝试和错误来计算偏移位置。我还有很多书要读。对于使用聊天功能,我深表歉意。谢谢和问候。