在IText7中创建PdfFont

时间:2016-06-08 12:42:14

标签: itext

我们正在评估Itext7(因此我对IText7相当新),并希望更改表格中的字体。当然,一旦我有了字体,更改桌面上的字体很容易,但是创建字体很有挑战性。我找到了简单的例子 font = PdfFontFactory.createFont(FontConstants.TIMES_ITALIC, PdfEncodings.WINANSI);

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

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

幸运的是,您发布的问题已经在第二个iText 7教程iText 7: Building Blocks中处理过了。您需要的信息位于Chapter 1: Introducing the PdfFont class

当您阅读本章时,您将理解字体的大小不应该是PdfFont类的属性。而是在您使用此字体的对象级别定义字体大小。

例如:

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的众多改进之一。