如何在Stamper中使用Verdana字体(iText PDF)

时间:2014-10-16 12:26:41

标签: pdf itext

我想在使用iText PDF标记PDF文件时使用Verdana作为字体。原始文件使用的是Verdana,它不是Basefont类中的一个选项。

这是现在创建我的字体的功能:

def standardStampFont() {
    return BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, false)
}

我想将其更改为Verdana字体,但只是将部件BaseFont.HELVETICA"Verdana"进行交换并不起作用。

有什么想法吗?提前谢谢!

2 个答案:

答案 0 :(得分:5)

据记载,iText支持标准类型1字体,因为iText附带AFM文件(Adobe字体度量文件)。 iText不知道其他字体的字体指标(Verdana不是标准类型1字体)。您需要提供Verdana字体文件的路径。

BaseFont.createFont("c:/windows/fonts/verdana.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED)

请注意,我将false更改为BaseFont.EMBEDDED,因为您身边的同样问题也会出现在查看您文件的人身边:他的PDF查看器可以呈现标准类型1种字体,但可能无法渲染其他字体,如Verdana。

警告:硬编码路径"c:/windows/fonts/verdana.ttf"适用于我本地计算机,因为可以在本地计算机上使用该路径找到字体文件。这段代码不能在我托管iText网站的服务器上工作(虽然这个Linux服务器甚至没有c:/windows/fonts目录)。我通过示例使用此硬编码路径。部署应用程序时,应确保字体存在且可用。

答案 1 :(得分:0)

添加此行可确保FontFactory实际在操作系统中注册字体'默认字体目录:

FontFactory.RegisterDirectories();

之后,可以使用类似

的内容找到所有已安装的字体
var myfont = FontFactory.GetFont("Verdana", 10f, iTextSharp.text.Font.NORMAL);

我知道这篇文章已经过时了,但我认为它仍然相关。