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

10
4个回答

22

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

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

不错,这比我想象的要好。 (新的DeviceRgb有另一个带有浮点参数的构造函数,该构造函数使用0-1间隔,但是使用整数参数的构造函数更适合开发人员) - Balagex

5

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

PdfCanvas canvas = new PdfCanvas(pdfPage);
canvas.setColor(ColorConstants.DARK_GRAY, true);

3
Cell hcell = new Cell();   
Paragraph paragraph = new Paragraph("Your Text").setTextAlignment(TextAlignment.CENTER).setFontSize(8);
hcell.add(paragraph);
Color color = WebColors.getRGBColor("red"); // Color name to RGB
hcell.setBackgroundColor(color);

3
这里是C#版本,注意驼峰命名法。WebColors.GetRGBColor("red")或者WebColors.GetRGBColor("#FF0000")都可以正常工作。但是由于某种原因,Color.MakeColor(new PdfDeviceCs.Rgb(), new [] {31f,141f,71f})无法正常工作。 - Henryk Budzinski

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

起初,我不知道如何获取/设置颜色空间,也不清楚 makeColor 方法的第一个参数需要什么。在记录以下信息后,我才明白了。
LOGGER.info(Color.GREEN.getColorSpace().getPdfObject());

我看到了,这是一个与 RGB 相关的信息,所以也许我应该将第二个 float[] 指定为 3 个元素(不是像 CMYK 那样的 4 个元素)。

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

另一个大问题是,如何设置浮点数值。对于深绿色的逻辑提示是 62、172、62,但我什么都没看到。我必须意识到,在结果颜色中,0 表示 0,但任何大于 1 的数字表示 255,因此尝试设置在 0 和 1 之间的值,然后我赢得了奖金! test color 1 的值为 {1,0.5f,0} test color 2 的值为 {0,0.5f,0}
特别感谢 iText7 文档编写者,他们无法为像我这样的新手插入任何有关这些非常基础的示例。

1
请随意提交改进javadocs的pull请求:https://github.com/itext/itext7/pulls。至于http://developers.itextpdf.com/examples-itext7上的文档,这是一个持续进行的过程,文档几乎每天都在不断增长,往往基于像您这样的Stack Overflow问题。 - Amedee Van Gasse

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