如何在iText 8中实现表格单元格自动填充剩余高度?
解决iText 8表格剩余高度自动填充问题
要让左侧单元格占据所有可用高度,核心是让左侧嵌套表格所在的单元格占满当前行的全部高度,具体修改如下:
修改后的完整代码
package TabellaProva; import java.io.FileNotFoundException; import com.itextpdf.kernel.geom.PageSize; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Cell; import com.itextpdf.layout.element.Paragraph; import com.itextpdf.layout.element.Table; import com.itextpdf.layout.properties.UnitValue; import com.itextpdf.layout.properties.VerticalAlignment; public class NestedTable { private static final String DEST = "./prova.pdf"; public static void main(String[] args) throws FileNotFoundException { PdfDocument pdf = new PdfDocument(new PdfWriter(DEST)); Document document = new Document(pdf, PageSize.A4); float[] colWidths = { 1, 1 }; Table externalTable = new Table(UnitValue.createPercentArray(colWidths)); Table leftNestedTable = new Table(2); leftNestedTable.setAutoLayout(); Table rightNestedTable = new Table(2); rightNestedTable.setAutoLayout(); Paragraph lp = new Paragraph("ciaone"); Cell lc = new Cell().add(lp); Cell lc2 = new Cell().add(lp); leftNestedTable.addCell(lc); leftNestedTable.addCell(lc2); Paragraph rp = new Paragraph("sono a destra sono a destrasono a destrasono a destrasono a destrasono a destra"); rightNestedTable.addCell(rp); rightNestedTable.addCell(rp); // 关键修改:给左侧嵌套表格创建独立单元格,设置高度为100%并指定垂直对齐 Cell leftContainerCell = new Cell(); leftContainerCell.setHeight(UnitValue.createPercentValue(100)); leftContainerCell.setVerticalAlignment(VerticalAlignment.TOP); // 按需调整对齐方式,比如TOP/CENTER/BOTTOM leftContainerCell.add(leftNestedTable); externalTable.addCell(leftContainerCell); externalTable.addCell(rightNestedTable); document.add(externalTable); document.close(); System.out.println("Document generated"); } }
关键修改说明
- 创建容器单元格:不再直接将左侧嵌套表格添加到外部表格,而是先创建一个
Cell作为承载容器 - 设置百分比高度:通过
setHeight(UnitValue.createPercentValue(100))让该单元格占满当前行的全部高度(行高由右侧内容更高的单元格自动决定) - 垂直对齐控制:使用
setVerticalAlignment可以调整左侧嵌套表格在容器内的位置,可根据需求选择顶部、居中或底部对齐
修改后,左侧单元格会自动匹配右侧单元格的高度,实现剩余高度的自动填充。
内容的提问来源于stack exchange,提问作者int_michele
相关产品推荐
相关产品推荐

