在 IText7 中创建 PdfFont

Creating PdfFont in IText7

我们正在评估 Itext7(因此我对 IText7 还很陌生)并想更改 table 中的字体。当然,一旦我有了字体,更改 table 上的字体就很容易,但是创建字体具有挑战性。我找到了简单的例子 font = PdfFontFactory.createFont(FontConstants.TIMES_ITALIC, PdfEncodings.WINANSI);

但我也想控制字体的大小、系列等。我找到了以前版本的 Itext 的示例,这些示例看起来非常简单。 BaseFont helvetica = BaseFont.createFont(HELVETICA, CP1252, EMBEDDED); Font font = new Font(helvetica, 12, Font.NORMAL);

感谢您的帮助。

iText 7 相当新。 iText 7: Jump-Start tutorial 可以帮助您入门,但我们仍需要编写许多有关 iText 7 特定方面的教程。

幸运的是,您发布的问题已经在第二个 iText 7 教程中得到处理 iText 7: Building Blocks. The information you need is in Chapter 1: Introducing the PdfFont class

当你阅读本章时,你会明白字体的大小不应该是PdfFontclass的属性。相反,您在使用该字体的对象级别定义字体大小。

例如:

Text title1 = new Text("The Strange Case of ").setFontSize(12);
Text title2 = new Text("Dr. Jekyll and Mr. Hyde").setFontSize(16);
Text author = new Text("Robert Louis Stevenson");
Paragraph p = new Paragraph().setFontSize(8)
    .add(title1).add(title2).add(" by ").add(author);
document.add(p);

在这种情况下,"The Strange Case of " 的字体大小为 12; "Dr. Jekyll and Mr. Hyde"字体大小为16; " by ""Robert Louis Stevenson" 的字体大小为 8,因为该大小是在 Paragraph 级别定义的。 " by "的字号是Paragraph的字号。没有为 "Robert Louis Stevenson" 定义字体大小,这意味着此 Text 对象 继承了 它所属的 Paragraph 的字体大小。

我目前正在编写第 2 章。您会注意到 iText 7 现在允许您通过在 Document 级别定义字体来更改 Document 的默认字体大小。这是 iText 7 的众多改进之一。