如何通过itext

时间:2016-11-18 08:38:56

标签: java pdf itext

抱歉,你可能听不懂我的问题,因为我不擅长英语。 我想在pdf的顶部和底部添加一些标签,但标签位置可以设置减去。如果我设置一个减号,我应该设置更大来设置标签。 我得到了How to resize existing pdf page size的帮助 改变我的pdf pagesize.then我遇到了另一个问题,当我把lly设为一个
减去,我的文字被截断,然后我想将底部长度添加到顶部,但我不知道如何移动文本以使文本处于中心。

密码

float newTop = rectangle.getTop();
                    if (printSet.getHeaderMargins() < 0) {
                        newTop += height2Offset(PrintSet.defaultMargins - printSet.getHeaderMargins());
                        headMargins = height2Offset(PrintSet.defaultMargins);
                    }
                    if (printSet.getFooterMargins() < 0) {
                        newTop += height2Offset(PrintSet.defaultMargins - printSet.getFooterMargins());
                        footMargins = height2Offset(PrintSet.defaultMargins);
                    }
                    float[] newBoxValues = new float[] {
                            rectangle.getLeft(),
                            rectangle.getBottom(),
                            rectangle.getRight(),
                            newTop
                    };
                    PdfArray newBox = new PdfArray(newBoxValues);
                    PdfDictionary pageDict = reader.getPageN(page + 1);
                    pageDict.put(PdfName.CROPBOX, newBox);
                    pageDict.put(PdfName.MEDIABOX, newBox);

enter image description here

1 个答案:

答案 0 :(得分:0)

目前,您正在定义一个新的页面大小:

float[] newBoxValues = new float[] {
    rectangle.getLeft(),
    rectangle.getBottom(),
    rectangle.getRight(),
    newTop
};

这会创建一个更大的矩形,但该矩形只会将页面向上扩展。

我认为你应该像这样创建一个新的矩形:

float[] newBoxValues = new float[] {
    rectangle.getLeft(),
    rectangle.getBottom() - extramarginBottom,
    rectangle.getRight(),
    rectangle.getTop() + extramarginTop
};

我无法帮助您定义extramarginBottomextramarginTop的值,因为我不确定您的height2Offset()方法应该做什么,也不确定PrintSet.defaultMargins是什么,printSet.getHeaderMargins()printSet.getFooterMargins()是关于。

基本上,extramarginTop是要在顶部添加的高度,而extramarginBottom是要在底部添加的高度:

enter image description here