2

如何设置文本的位置,使其相对于页面大小垂直居中?我想定位它,例如从右侧垂直居中的 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 的新手。

谢谢!

4

1 回答 1

2

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

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

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

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

于 2013-07-03T07:43:01.963 回答