我想在使用iText PDF标记PDF文件时使用Verdana作为字体。原始文件使用的是Verdana,它不是Basefont类中的一个选项。
这是现在创建我的字体的功能:
def standardStampFont() {
return BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, false)
}
我想将其更改为Verdana字体,但只是将部件BaseFont.HELVETICA
与"Verdana"
进行交换并不起作用。
有什么想法吗?提前谢谢!
答案 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);
我知道这篇文章已经过时了,但我认为它仍然相关。