【问题标题】:iText nested table inside a cell单元格内的 iText 嵌套表格
【发布时间】:2010-11-23 08:39:45
【问题描述】:

我正在使用 iText 2.1.0 版创建 PDF。我必须在表格的单元格中创建一个“详细信息”单元格。我这样做是在该单元格内嵌套一个表格。这种方法的问题是嵌套表格的边界不接触容器单元格的边界。我正在寻找的是嵌套在单元格内的表格,其边框与嵌套表格边框没有区别。

我有一个像这样的测试。我在循环中执行此操作,以将单元格内的表格添加到外部表格:

PdfPCell testCell = new PdfPCell(new Paragraph("Test"));
//I want this border to touch the containerCell borders.
testCell.setBorder(PdfPCell.BOTTOM);
testTable =  new PdfPTable(2);

testTable.addCell(testCell);
testTable.addCell(testCell);
testTable.addCell(testCell);
testTable.addCell(testCell);

PdfPCell containerCell = new PdfPCell();
containerCell.addElement(testTable);
outerTable.addCell(containerCell);

谢谢。

【问题讨论】:

    标签: java pdf itext


    【解决方案1】:

    我想我终于找到了:

    testTable = new PdfPTable(1);
    PdfPCell c2;
    testTable.addCell("aaaa");
    testTable.addCell("bbbb");
    
    c2 = new PdfPCell (testTable);//this line made the difference
    c2.setPadding(0);
    outerTable.addCell(c2);
    

    这里的技巧是在 PdfPCell 构造函数之一中使用该表。

    【讨论】:

    • 为什么 c1 在那里,但没有被提及?有必要吗?
    • 我猜是错字。它应该很可能是c2。我会解决的。
    【解决方案2】:

    我发现导致我的表格小于封闭单元格的原因是我没有将以下代码添加到表格中:

    table.setWidthPercentage(100);
    

    【讨论】:

      【解决方案3】:

      如您所见,

      cell.setPadding(0);
      

      是你需要的。

      【讨论】:

      • 是的,但我发现这样做 c2 = new PdfPCell(); c2.addElement(testTable); c2.setPadding(0);与 c2 = new PdfPCell (testTable); 的工作方式不同; c2.setPadding(0);外表.addCell(c2);在第一种情况下,您可以看到嵌套的表格边框。
      • 是的,当使用 AddElement 时,会使用添加元素的属性。使用构造函数时,将使用表格单元格的属性,而不是添加元素的任何属性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 2012-09-11
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多