无法沿x轴放置第二个ColumnText itextpdf

时间:2018-10-17 00:39:17

标签: java itext

我的onEndPage方法上有两个单独的列文本。第一个ColumnText正确放置,但第二个不会沿x轴移动。这是我的摘录。

 ///AddFirst ColumnText
            Font bfont = new Font(Font.FontFamily.HELVETICA, 13, Font.BOLD);
            cb.roundRectangle(100f, 1150f, 400f, 100f, 5f);
            cb.stroke();
            ColumnText btext = new ColumnText(cb);
            btext.setSimpleColumn(110f, 1250f, 400f, 100f);
            btext.addElement(new Paragraph("BRANCH: MYBRANCH", bfont));
            btext.addElement(new Paragraph("ADDRESS: P.O Box 15524", bfont));
            btext.addElement(new Paragraph("PHONE NUMBER: 0720000000/072000000", bfont));
            btext.go();


            cb.roundRectangle(650f, 1150f, 400f, 100f, 5f);
            cb.stroke();

        ///Add Head office ColumnText
            ColumnText htext = new ColumnText(cb);
            htext.setSimpleColumn(850f, 1250f, 400f, 500f);//This wont position on x axis
            htext.addElement(new Paragraph("HEAD OFFICE", bfont));
            htext.addElement(new Paragraph("TEL: 0720000002/072000000", bfont));
            htext.addElement(new Paragraph("MOBILE: 0720000000/072000000", bfont));
            htext.addElement(new Paragraph("EMAIL: email@domain", bfont));
            htext.addElement(new Paragraph("WEBSITE: https://website.com/", bfont));
            htext.go();

我在这里想念什么。但是,如果我更改了850f,则第二列文本应该可以在文档中的任意位置自由移动。

1 个答案:

答案 0 :(得分:0)

您误解了ColumnText方法setSimpleColumn的第三个和第四个参数!

您似乎认为它们是矩形的宽度和高度,而第一个和第二个位置是矩形。

与第一个和第二个参数一样,第三个和第四个参数构成矩形角的坐标!

因此,通过更改850f

htext.setSimpleColumn(850f, 1250f, 400f, 500f)

一点,水平框仍然从x=400f开始(第三个参数,第二个给定角的 x 坐标)。此外,您只向ColumnText添加了相对较短的段落,因此除非更改了第一个参数,否则在更改框的水平端之后它们不会出现不同的折断。

因此,如果要更改ColumnText框水平开始的位置,请更改 first third lower 参数值。

顺便说一句,通常将第一和第二坐标用于左下角,将第三和第四坐标用于右上角。这也是方法参数名称的建议:

public void setSimpleColumn(final float llx, final float lly, final float urx, final float ury)