iText | 无法设置单元格边框颜色

Nar*_*esh 5 itext

我正在尝试设置表格单元格的边框颜色。无论我尝试什么,边框颜色都不会改变-它始终是黑色!我究竟做错了什么?这是我的测试代码。cell1应该有一个红色的顶部边框和一个蓝色的底部边框:

    PdfPTable table = new PdfPTable(2);

    PdfPCell cell1 = new PdfPCell(new Phrase("Cell 1"));
    cell1.setBorderColorTop(new BaseColor(255, 0, 0));
    cell1.setBorderColorBottom(BaseColor.BLUE);
    table.addCell(cell1);

    PdfPCell cell2 = new PdfPCell(new Phrase("Cell 2"));
    table.addCell(cell2);
Run Code Online (Sandbox Code Playgroud)

Bru*_*gie 6

请看一个ColoredBorder示例。我不得不承认:iText中存在不一致之处。

默认情况下,iText中的所有边框均相等。如果更改一个边框的颜色,则必须添加额外的一行:

cell = new PdfPCell(new Phrase("Cell 1"));
cell.setUseVariableBorders(true);
cell.setBorderColorTop(BaseColor.RED);
cell.setBorderColorBottom(BaseColor.BLUE);
Run Code Online (Sandbox Code Playgroud)

使用该setUseVariableBorders()方法,我们告诉iText边界不相等。如您所见,现在尊重颜色:

在此处输入图片说明

setUseVariableBorders()如果更改边框的宽度,则不必使用。在这种情况下,默认值为自动更改(这是我前面提到的不一致之处):

cell = new PdfPCell(new Phrase("Cell 2"));
cell.setBorderWidthLeft(5);
cell.setBorderColorLeft(BaseColor.GREEN);
cell.setBorderWidthTop(8);
cell.setBorderColorTop(BaseColor.YELLOW);
Run Code Online (Sandbox Code Playgroud)

如您所见,单元格1和2中仍然有两个黑色边框。我们可以使用以下setBorder()方法将其删除:

cell = new PdfPCell(new Phrase("Cell 3"));
cell.setUseVariableBorders(true);
cell.setBorder(Rectangle.LEFT | Rectangle.BOTTOM);
cell.setBorderColorLeft(BaseColor.RED);
cell.setBorderColorBottom(BaseColor.BLUE);
Run Code Online (Sandbox Code Playgroud)

如果查看单元格2,您会发现我们选择了相当粗的边框。结果,这些边框与单元格中的文本重叠。我们可以使用以下setUseBorderPadding()方法避免这种情况:

cell.setBorder(Rectangle.LEFT | Rectangle.TOP);
cell.setUseBorderPadding(true);
cell.setBorderWidthLeft(5);
cell.setBorderColorLeft(BaseColor.GREEN);
cell.setBorderWidthTop(8);
cell.setBorderColorTop(BaseColor.YELLOW);
Run Code Online (Sandbox Code Playgroud)

现在,在计算填充时将考虑边框。