iText,Font,BaseFont和createFont()发生了什么?

时间:2012-07-06 16:44:24

标签: itext

关于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.HELVETICA替换BaseFont.CP1257然后它不起作用,我得到一个页面说“无法加载pdf文档。”

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

3 个答案:

答案 0 :(得分:8)

要从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();

答案 1 :(得分:4)

答案 2 :(得分: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);