请看
ColoredBorder示例。我必须承认:iText存在不一致之处。
默认情况下,iText中所有边框都是相等的。如果您更改一个边框的颜色,则必须添加额外的线条:
cell = new PdfPCell(new Phrase("Cell 1"));
cell.setUseVariableBorders(true);
cell.setBorderColorTop(BaseColor.RED);
cell.setBorderColorBottom(BaseColor.BLUE);
使用
setUseVariableBorders()
方法,我们告诉iText边框不相等。如您所见,现在颜色得到了保留。
![enter image description here](https://istack.dev59.com/qdlrV.webp)
如果您更改边框的宽度,则不需要使用setUseVariableBorders()
。在这种情况下,默认值会自动更改(这是我之前提到的不一致性):
cell = new PdfPCell(new Phrase("Cell 2"));
cell.setBorderWidthLeft(5);
cell.setBorderColorLeft(BaseColor.GREEN);
cell.setBorderWidthTop(8);
cell.setBorderColorTop(BaseColor.YELLOW);
如您所见,单元格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);
如果您查看单元格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);
现在计算填充时将考虑边框。