如何在Itext7中使用自定义颜色和自定义字体

时间:2018-09-17 13:36:39

标签: itext itext7

我正在使用IText7从html字符串生成pdf。 现在,我要求将自定义颜色和自定义字体或字体系列应用于段落。

如何使用Itext7完成它?

谢谢

1 个答案:

答案 0 :(得分:2)

自定义字体:

许多不同的iText 7教程对此进行了解释:

示例:

假设您有Cardo Regular字体的字体程序:

public static final String REGULAR =
    "src/main/resources/fonts/Cardo-Regular.ttf";

您可以使用以下字体程序创建FontProgram对象:

FontProgram fontProgram =
    FontProgramFactory.createFont(REGULAR);

使用此FontProgram对象,您可以创建一个PdfFont

PdfFont font = PdfFontFactory.createFont(
    fontProgram, PdfEncodings.WINANSI, true);

现在您可以使用此PdfFont对象来更改段落的字体:

p.setFont(font);

这只是使用自定义字体的一种方法;您将在教程中找到其他方式。您当然知道,将教程复制到Stack Overflow答案中没有任何意义。

自定义颜色

iText 7具有一个名为Color的类:http://itextsupport.com/apidocs/iText7/latest/com/itextpdf/kernel/colors/Color.html

此类具有几个子类:CalGrayCalRgbDeviceCmykDeviceGrayDeviceNDeviceRgbIccBasedIndexedLabPatternColorSeparation

您可以通过选择其中一个子类来创建自定义颜色,具体取决于您正在使用的颜色空间。例如:假设您要使用设备RGB颜色,则可以使用DeviceRgb课。

示例:

假设您要使用RGB颜色,其值分别为red = 0.2,green = 0.2,blue = 0.2,那么您将使用以下构造函数:http://itextsupport.com/apidocs/iText7/latest/com/itextpdf/kernel/colors/DeviceRgb.html#DeviceRgb-float-float-float-

Color color = new ColorRgb(0.2f, 0.2f, 0.2f);

这只是一个例子。 ISO 32000-2将为您提供有关色彩空间之间差异的更多信息(需要选择正确的色彩类别),API文档将解释不同构造函数的工作原理。