首页 > 解决方案 > 段落的 iText7 制表符

问题描述

我的要求是使用 iText 7 如下构建 pdf。

在此处输入图像描述

使用下面的代码。

Table table = new Table(UnitValue.createPercentArray(2)).useAllAvailableWidth();
        table.addCell(getNameCell("First Lastname", TextAlignment.LEFT));
        // table.addCell(getCell("Text in the middle", TextAlignment.CENTER));
        table.addCell(getLogoCell("Company", TextAlignment.RIGHT));
        table.addCell(getAddressCell("1111 Boones Ridge Rd", TextAlignment.LEFT));
        table.addCell(getLogoCell(" ", TextAlignment.RIGHT));
        table.addCell(getAddressCell("Acworth, Ga 30102", TextAlignment.LEFT));
        table.addCell(getLogoCell(" ", TextAlignment.RIGHT));
        table.addCell(getAddressCell("P: 1234567890", TextAlignment.LEFT));
        table.addCell(getLogoCell(" ", TextAlignment.RIGHT));
        table.addCell(getAddressCell("test@gmail.com", TextAlignment.LEFT));
        table.addCell(getLogoCell(" ", TextAlignment.RIGHT));
        table.addCell(getAddressCell("www.testonline.com", TextAlignment.LEFT));
        table.addCell(getLogoCell(" ", TextAlignment.RIGHT));
        doc.add(table);

在这里,不必要地添加空格,否则文本会水平对齐。此外,由于正确的文本字体更大,因此名称和地址之间有一个空格。有没有更好的方法来处理这个?

标签: itext7

解决方案


iText 7 具有制表位功能。您可以通过以下方式添加选项卡并将文本向右对齐:

Paragraph p = new Paragraph();
p.addTabStops(new TabStop(PageSize.A4.getRight() - document.getLeftMargin() - document.getRightMargin(),
        TabAlignment.RIGHT));
p.add(new Text("Hello")).add(new Tab()).add(new Text("World"));

要调整您的姓名和地址之间的间距,您可以使用领先的属性:

p.setFixedLeading(12);

推荐阅读