12

关于 font 和 basefont 发生了什么对我来说有很多谜团。尤其是在涉及到构造函数时。iText 网站将此行作为新字体的示例代码

 BaseFont unicode = BaseFont.createFont("c:/windows/fonts/arialuni.ttf", 
                        BaseFont.IDENTITY_H, 
                        BaseFont.EMBEDDED);

我可以得到这个电话工作:

BaseFont bf = BaseFont.createFont(BaseFont.COURIER, BaseFont.CP1257, 
                  BaseFont.EMBEDDED);

但是,如果我将 BaseFont.CP1257 替换为 BaseFont.HELVETICA 则它不起作用,并且我得到一个页面显示“无法加载 pdf 文档”。

我尝试查看类文件,但似乎无法弄清楚第二个参数是什么(我假设它类似于备用字体,以防第一个字体不起作用,例如在 HTML 中),我可以'不知道为什么有些字体会起作用而其他字体不起作用。

4

3 回答 3

9

要从jar中加载它,请使用前导斜杠,否则,只需使用字体的绝对路径(“C:[...]\fonts\Sansation_Regular.ttf”)。例如:

Font font = FontFactory.getFont("/fonts/Sansation_Regular.ttf",
    BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 0.8f, Font.NORMAL, BaseColor.BLACK);
BaseFont baseFont = font.getBaseFont();
于 2013-12-17T20:29:34.787 回答
4

第二个参数是编码。

有关详细信息,请参阅此处的文档。

于 2012-08-15T14:37:32.543 回答
0

这对我有用。旧帖子,但我找不到简单的答案。

//Here you setup the font that you want. I put it under the root/Content/fonts folder in my project
Font font = FontFactory.GetFont("~/Content/fonts/ARIALN.ttf", BaseFont.CP1252,false, 9);

//Here I create the paragraph then assign the font to it at the end
var addressAttn = new Paragraph("Attn:  Manager, Billing Services", font);
于 2015-07-08T12:51:19.043 回答