从 itext table 中移除嵌套的 table 边框
Remove nested table border from itext table
我试图通过 java 在 itext 中创建嵌套的 table。我可以创建它,但出乎意料的是,嵌套的 table 拥有自己的边框以及原始 table 的单元格边框。
有什么方法可以只删除 nestedParent 的 右栏中 nested table 的外边框吗?
我的代码:
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, 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
您需要从内部 table 单元格中删除每个边框(即“col11”单元格应将其上边框和左边框设置为空或 Border#NO_BORDER 并设置内部 table 单元格也为空)。
此外,您应该将内部 table 的填充设置为 0 以消除间隙。
Cell cell = new Cell();
cell.setPadding(0);
cell.add(nestedTable);
outerTable.addCell(cell);
我无法使用内部 table 解决问题。因此,为了解决这个问题,我必须定义一个包含 5 列的 table,然后在必要时我为该特定条目定义了必要的单元格定义,使用 row
和 col
span
, 喜欢
Cell cell= new Cell(1,1);
Cell cell=new Cell(1,4);
对于一行中的五列:
Cell cell= new Cell(4,1)
这样就解决了!
我试图通过 java 在 itext 中创建嵌套的 table。我可以创建它,但出乎意料的是,嵌套的 table 拥有自己的边框以及原始 table 的单元格边框。
有什么方法可以只删除 nestedParent 的 右栏中 nested table 的外边框吗?
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, 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
您需要从内部 table 单元格中删除每个边框(即“col11”单元格应将其上边框和左边框设置为空或 Border#NO_BORDER 并设置内部 table 单元格也为空)。
此外,您应该将内部 table 的填充设置为 0 以消除间隙。
Cell cell = new Cell();
cell.setPadding(0);
cell.add(nestedTable);
outerTable.addCell(cell);
我无法使用内部 table 解决问题。因此,为了解决这个问题,我必须定义一个包含 5 列的 table,然后在必要时我为该特定条目定义了必要的单元格定义,使用 row
和 col
span
, 喜欢
Cell cell= new Cell(1,1);
Cell cell=new Cell(1,4);
对于一行中的五列:
Cell cell= new Cell(4,1)
这样就解决了!