我正在使用IText7从html字符串生成pdf。现在我有要求将自定义颜色和自定义字体或字体系列应用于段落。
如何用Itext7完成?
谢谢
许多不同的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
这个类有几个子类:CalGray
,CalRgb
,DeviceCmyk
,DeviceGray
,DeviceN
,DeviceRgb
,IccBased
,Indexed
,Lab
,PatternColor
,Separation
。
您可以通过选择其中一个子类来创建自定义颜色,具体取决于您正在使用的颜色空间。例如:假设您要使用设备RGB颜色,那么您将使用DeviceRgb
类。
一个例子:
假设您想要RGB颜色,其值为红色= 0.2,绿色= 0.2,蓝色= 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文档将解释不同构造函数的工作方式。