iText 7列宽为什么这些不适合?

时间:2017-01-02 14:07:29

标签: itext column-width

我是iText的新手并直接跳到iText 7,但发现在我的桌子上设置列宽是非常具有挑战性的。显然,我有一些基本的东西。

在梳理网络寻找答案时,我发现一些基于itext 5的答案似乎与itext 7(硬编码固定宽度)无关。 iText 7的东西似乎假设我没有的知识! "相对列宽" - 那是什么意思?数字加起来应该是100吗?有2列或4列的简单示例是有意义的,但我很难将其转换为7列表。

我有一个包含7列的表格。第1列,第3列和第5列应该相对较窄,它们只是标签。第7列可以占用任何可用空间。例如:

Col1  Col2         Col3  Col4         Col5      Col6        Col7 
CMS#: C34827284    Date: 12/5/16      End Date: 12/6/16     approved

我以为我拥有它,但是我的最新尝试产生了" Element不适合当前区域"错误。这是我如何定义它

Table htable = new Table(new float[] {3, 8, 5, 10, 5, 10, 30});

这些数字加起来为71,为什么它们不适合?他们是否需要添加最多100个或者我完全在错误的轨道上使用"加起来高达100"想法?

1 个答案:

答案 0 :(得分:1)

您是否为整个表定义了宽度?

这就是我的尝试:

public void createPdf(String dest) throws IOException {
    //Initialize PDF writer
    PdfWriter writer = new PdfWriter(dest);

    //Initialize PDF document
    PdfDocument pdf = new PdfDocument(writer);

    // Initialize document
    Document document = new Document(pdf, PageSize.A4);

    // Create table
    Table htable = new Table(new float[] {3, 8, 5, 10, 5, 10, 30});
    htable.setFontSize(8);
    htable.setWidthPercent(100);
    htable.addHeaderCell(new Cell().add("Col1"));
    htable.addHeaderCell(new Cell().add("Col2"));
    htable.addHeaderCell(new Cell().add("Col3"));
    htable.addHeaderCell(new Cell().add("Col4"));
    htable.addHeaderCell(new Cell().add("Col5"));
    htable.addHeaderCell(new Cell().add("Col6"));
    htable.addHeaderCell(new Cell().add("Col7"));
    htable.addCell(new Cell().add("CMS#"));
    htable.addCell(new Cell().add("C34827284"));
    htable.addCell(new Cell().add("Date:"));
    htable.addCell(new Cell().add("12/5/16"));
    htable.addCell(new Cell().add("EndDate:"));
    htable.addCell(new Cell().add("12/6/16"));
    htable.addCell(new Cell().add("Approved"));
    // Add the table
    document.add(htable);
    // Close the document
    document.close();
}

结果如下所示:

enter image description here

请注意,我缩小了字体大小,以避免按照CMS#拆分的方式拆分更多文本。

如果您尚未执行此操作,请尝试将htable.setWidthPercent(100);添加到代码中。问题应该消失。