所以我有这个代码
PdfFont customFont = PdfFontFactory.createFont("/templates/NunitoSans.ttf", PdfEncodings.IDENTITY_H);
PdfFont customFontBold = PdfFontFactory.createFont("/templates/NunitoSansBold.ttf", PdfEncodings.IDENTITY_H);
PdfFont customFontBoldItalic = PdfFontFactory.createFont("/templates/NunitoSansBoldItalic.ttf", PdfEncodings.IDENTITY_H);
PdfFont customFontItalic = PdfFontFactory.createFont("/templates/NunitoSansItalic.ttf", PdfEncodings.IDENTITY_H);
现在我在解析器中跟踪我是粗体还是斜体,如果是这样我必须使用
setFont
调整为适合组合的值
是否可以让 setFont 理解它可以是粗体、斜体或两者都使用 .setBold 或 .setItalic 并让它选择正确的字体?
您可以使用
FontProvider
。这允许您首先使用 FontFamily 设置器选择 Verdana 或 NunitoSans 等字体系列,然后使用 FONT_WEIGHT
和 FONT_STYLE
属性选择粗体和斜体样式。
例如:
try (
PdfWriter pdfWriter = new PdfWriter(TARGET);
PdfDocument pdfDocument = new PdfDocument(pdfWriter);
Document document = new Document(pdfDocument);
) {
FontProvider fontProvider = new FontProvider();
fontProvider.addSystemFonts();
document.setFontProvider(fontProvider);
Div div = new Div();
div.setFontFamily("Verdana");
Paragraph paragraph = new Paragraph();
paragraph.add("Regular");
div.add(paragraph);
paragraph = new Paragraph();
paragraph.setProperty(Property.FONT_WEIGHT, "700");
paragraph.add("bold");
div.add(paragraph);
paragraph = new Paragraph();
paragraph.setProperty(Property.FONT_STYLE, "italic");
paragraph.add("Italic");
div.add(paragraph);
paragraph = new Paragraph();
paragraph.setProperty(Property.FONT_WEIGHT, "700");
paragraph.setProperty(Property.FONT_STYLE, "italic");
paragraph.add("Bold & Italic");
div.add(paragraph);
document.add(div);
}
这会创建(如果安装了 Verdana 字体系列):
FontProvider
还有其他方法(addStandardPdfFonts
、addDirectory
和许多 addFont
重载)来添加字体,请查看 JavaDocs。
使用当前的 iText 8.0.4-SNAPSHOT 进行测试。