微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从itext表中删除嵌套表边框

如何解决从itext表中删除嵌套表边框

我试图通过java在itext中创建嵌套表。我可以创建它,但是出乎意料的是,嵌套表拥有自己的边框以及原始表的单元格边框。 有什么方法可以在 nestedParent的右列中仅删除嵌套表的外边界?

my generated pdf format

我的代码

String dest= FileSystems.getDefault().getPath("").toAbsolutePath().toString()+"/test.pdf";
        log.info(dest);
        PdfWriter writer= new PdfWriter(dest);
        PdfDocument pdfDoc = new PdfDocument(writer);
        pdfDoc.addNewPage();

        Document document = new Document(pdfDoc);

        float [] pointColumnWidths = {150F,150F};
        Table outerTable = new Table(pointColumnWidths);

        for (int i = 0; i < 5; i++) {
            outerTable.addCell("col1-" + i);
            outerTable.addCell("col2-" + i);

        }

        float [] innerTablePointColumnWidths = {150F,150F,150F};
        Table nestedTable = new Table(innerTablePointColumnWidths);

        nestedTable.addCell("col11");
        nestedTable.addCell("col11_val");

        nestedTable.addCell("col12");
        nestedTable.addCell("col12_val");

        nestedTable.addCell("col22");
        nestedTable.addCell("col22_val");

        nestedTable.addCell("col23");
        nestedTable.addCell("col23_val");

        nestedTable.addCell("col31");
        nestedTable.addCell("col31_val");

        nestedTable.addCell("col32");
        nestedTable.addCell("col32_val");

        outerTable.addCell("nestedParent");

        outerTable.setBorder(Border.NO_BORDER);
       /* Cell cell = new Cell();
        cell.add(nestedTable);*/
        // cell.setBorder(Border.NO_BORDER);
        //outerTable.addCell(cell);

        outerTable.addCell(nestedTable);



        document.add(outerTable);

        document.close();

itext相关的lib版本7.1.12

解决方法

您需要从内部表格单元格中删除每个边框(即“ col11”单元格应将其上下边框设置为null或Border#NO_BORDER并将内部表格单元格也设置为null)。

此外,您应该将内部表的填充设置为0,以消除间隙。

Cell cell = new Cell();
        cell.setPadding(0);
        cell.add(nestedTable);
        outerTable.addCell(cell);
,

我无法使用内部表解决问题。因此,要解决此问题,我必须定义一个5列的表格,然后在必要时使用rowcol span为该特定条目定义必要的单元格定义,例如

Cell cell= new Cell(1,1);
Cell cell=new Cell(1,4);

对于一行中的五列:

Cell cell= new Cell(4,1)

这样可以解决!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。