【发布时间】:2019-02-21 10:56:54
【问题描述】:
我正在使用 IText7 从 html 字符串生成 pdf。 现在我需要将自定义颜色和自定义字体或字体系列应用于段落。
如何用 Itext7 完成?
谢谢
【问题讨论】:
我正在使用 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、@987654@3 987654344@.
您可以通过选择其中一个子类来创建自定义颜色,具体取决于您正在使用的色彩空间。例如:假设您想使用设备 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 文档将解释不同构造函数的工作原理。
【讨论】: