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