gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:35:53 71 4
gpt4 key购买 nike

我正在尝试设置表格单元格的边框颜色。无论我尝试什么,边框颜色都不会改变 - 它总是黑色!我究竟做错了什么?这是我的测试代码。 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 边界不相等。如您所见,颜色现在受到尊重:

enter image description here

使用 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);

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

关于iText |无法设置单元格边框颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35073619/

71 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com