【问题标题】:How to use Verdana Font in Stamper (iText PDF)如何在 Stamper (iText PDF) 中使用 Verdana 字体
【发布时间】:2014-12-11 19:42:20
【问题描述】:

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

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

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

我想将其更改为 Verdana 字体,但仅将部分 BaseFont.HELVETICA"Verdana" 交换是行不通的。

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

【问题讨论】:

    标签: pdf itext


    【解决方案1】:

    如文档所述,iText 支持 Standard Type 1 字体,因为 iText 附带 AFM 文件(Adobe Font Metrics 文件)。 iText 不知道其他字体的字体规格(Verdana 不是标准 Type 1 字体)。您需要提供 Verdana 字体文件的路径。

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

    请注意,我将false 更改为BaseFont.EMBEDDED,因为您遇到的同样问题,也会发生在查看您文件的人身上:他的 PDF 查看器可以呈现标准 Type 1 字体,但是可能无法渲染 Verdana 等其他字体。

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

    【讨论】:

    • 感谢您对嵌入式部分的回答和提示。我确实必须改变路径,但这应该不是问题。
    【解决方案2】:

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

    FontFactory.RegisterDirectories();
    

    之后可以使用类似的方式找到所有已安装的字体

    var myfont = FontFactory.GetFont("Verdana", 10f, iTextSharp.text.Font.NORMAL);
    

    我知道这篇文章很旧,但我猜它仍然相关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-14
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 2015-12-04
      • 1970-01-01
      相关资源
      最近更新 更多