如何使用itext 7设置自定义颜色

Bal*_*gex 3 java colors itext itext7

我找不到一个非常简单的问题的解决方案,如何为文本/行/等设置自定义颜色.在java代码中使用iText7?

我在iText5上找到了这个回复,但在版本7 中没有BaseColor类...

小智 8

我使用此代码来自定义文本颜色:

com.itextpdf.kernel.color.Color myColor = new DeviceRgb(255, 100, 20);
Paragraph colorPara = new Paragraph("text with color").setFontColor(myColor);
Run Code Online (Sandbox Code Playgroud)


Jan*_*nar 5

一种选择是使用ColorConstants. 它位于内核依赖项中。

PdfCanvas canvas = new PdfCanvas(pdfPage);
canvas.setColor(ColorConstants.DARK_GRAY, true);
Run Code Online (Sandbox Code Playgroud)


Bal*_*gex 2

经过一些尝试和失败循环后,我找到了以下解决方案:

        float[] col = new float[]{0,0.5f,0};
        Color szin = Color.makeColor(Color.GREEN.getColorSpace(), col);
        Canvas canvas = new Canvas(pdfCanvas, pdfDoc, page.getPageSize());
        canvas.setProperty(Property.FONT_COLOR, szin);
Run Code Online (Sandbox Code Playgroud)

起初,我不知道如何获取/设置该颜色空间,以及 makeColor 方法的第一个参数需要什么。注销后如下

LOGGER.info(Color.GREEN.getColorSpace().getPdfObject());
Run Code Online (Sandbox Code Playgroud)

我看到,这是一个 RGB 相关信息,所以也许我应该指定第二个 float[] 为 3 个元素(而不是 4 个,如 cmyk)。

信息:2464035 [http-listener-1(3)] 信息 fornax.hu.pdf.generate.PdfCreator2 - /DeviceRGB

另一个大问题是,我应该如何设置浮点值。深绿色的逻辑提示是 62,172,62,但我什么也没看到。我必须意识到,0 充当 0,但任何大于 1 的数字在结果颜色中充当 255,因此尝试将值设置在 0 和 1 之间,然后我得到了大奖!

使用 {1,0.5f,0} 测试颜色 1使用 {0,0.5f,0}测试颜色 2

特别感谢 iText7 文档编写者,他们无法为像我这样的菜鸟插入任何关于这个非常非常基本的内容的示例。