文字 |无法设置单元格边框颜色
iText | Can't set cell border color
我正在尝试设置 table 单元格的边框颜色。无论我尝试什么,边框颜色都没有改变——它总是黑色的!我究竟做错了什么?这是我的测试代码。 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);
请查看 ColoredBorder 示例。我不得不承认:iText 中存在不一致。
默认情况下,iText 中的所有边框都是相等的。如果你改变一个边框的颜色,你必须添加一个额外的线:
cell = new PdfPCell(new Phrase("Cell 1"));
cell.setUseVariableBorders(true);
cell.setBorderColorTop(BaseColor.RED);
cell.setBorderColorBottom(BaseColor.BLUE);
使用 setUseVariableBorders()
方法,我们告诉 iText 边框不相等。如您所见,现在尊重颜色:
如果更改边框的宽度,则无需使用 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);
现在计算填充时将考虑边框。
我正在尝试设置 table 单元格的边框颜色。无论我尝试什么,边框颜色都没有改变——它总是黑色的!我究竟做错了什么?这是我的测试代码。 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);
请查看 ColoredBorder 示例。我不得不承认:iText 中存在不一致。
默认情况下,iText 中的所有边框都是相等的。如果你改变一个边框的颜色,你必须添加一个额外的线:
cell = new PdfPCell(new Phrase("Cell 1"));
cell.setUseVariableBorders(true);
cell.setBorderColorTop(BaseColor.RED);
cell.setBorderColorBottom(BaseColor.BLUE);
使用 setUseVariableBorders()
方法,我们告诉 iText 边框不相等。如您所见,现在尊重颜色:
如果更改边框的宽度,则无需使用 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);
现在计算填充时将考虑边框。