如何使用iText设置表格单元格的背景颜色?

30

虽然当然可以使用 BaseColor,但默认情况下,它提供的选择非常有限。

我想知道如何将自定义颜色添加到文档中?

...
        PdfPTable table = new PdfPTable(3);

        PdfPCell cell = new PdfPCell(new Phrase("some clever text"));
        cell.setBackgroundColor(BaseColor.GREEN);
        table.addCell(cell);
...
4个回答

50

希望这个回答对其他人有所帮助。

似乎可以通过以下方式将WebColor创建为新的BaseColor

BaseColor myColor = WebColors.GetRGBColor("#A00000");

然后可以作为背景添加:

cell.setBackgroundColor(myColor);

非常有用,而且简单易懂。谢谢! - k_rollo
由于某种原因,我的背景颜色默认设置为#00FFFF,并且不想更改为我想要的颜色 :/ 我认为新的itext Sharp已经有所改变,但这是我写的内容:BaseColor bblue = WebColors.GetRGBColor("#006EB6"); headerCell.BackgroundColor.Equals(bblue); 但是BackgroundColor仍然设置为默认值..我找不到setBackgroundColor,只有BackgroundColor。 - Kala J
2
WebColors现在已经过时了,你知道现代做法吗?或者我们应该忽略它的过时性(因为iTextSharp似乎使我用它做的大多数工作都过时了)? - Daniel Casserly

33

有很多选择。

BaseColor color = new BaseColor(red, green, blue); // or red, green, blue, alpha
CYMKColor cmyk = new CMYKColor(cyan, yellow, magenta, black); // no alpha
GrayColor gray = new GrayColor(someFloatBetweenZeroAndOneInclusive); // no alpha

还有图案颜色和阴影颜色,但这些要复杂得多。


这个解决方案适用于 iText 5。 - Kevin Montalvo
还有一些颜色预设,例如BaseColor.GREENBaseColor.RED - Artem Moroz

3
尝试以下代码:
cell.setBackgroundColor(new BaseColor(226, 226, 226));
或者:
cell.setBackgroundColor(WebColors.getRGBColor("#E2E2E2")); 已过时

0

另一种解决方案是:

public static String mColor = "#aa8cc5";
int aa = Integer.parseInt(mColor,16); // base 16
int colorArr = Color.rgb(Color.red(aa),Color.green(aa),Color.blue(aa));
cell1.setBackgroundColor(new BaseColor(colorArr));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接