【问题标题】:How to set monospaced font by using iTextSharp?如何使用 iTextSharp 设置等宽字体?
【发布时间】:2016-04-02 09:40:35
【问题描述】:

到目前为止,这就是我管理字体的方式:

BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.EMBEDDED, false);
Font titleFont = new Font(bf, 20);

现在,我想设置等宽(固定宽度)字体以进行字符串格式化。我是否必须下载一些 ttf 文件(因为我正在阅读它)或者 iTextSharp 中已经包含等宽字体

【问题讨论】:

    标签: c# pdf fonts itextsharp


    【解决方案1】:

    如果你不想嵌入字体,你可以使用这个:

    BaseFont bf = BaseFont.createFont(
        BaseFont.COURIER, BaseFont.CP1250, BaseFont.NOT_EMBEDDED);
    Font titleFont = new Font(bf, 20);
    

    Helvetica 是一种比例字体。如果需要等宽字体,则需要使用 Courier 等字体。有关等宽字体,请参阅 the Wikipedia page

    请注意,您的代码也没有创建嵌入的字体:Helvetica 是(就像 Courier 一样)所谓的 Standard Type 1 字体之一。永远不会嵌入标准 Type 1 字体,因为 iText 只能访问这些字体的 AFM 文件,而不能访问 PFB 文件。例如阅读:Why do I get a font embedding error when creating PDFA/1a?。在其他一些情况下,即使您不想,iText 也会嵌入字体。例如:Why is iText embedding a font even when I specify not to embed?

    如果您想嵌入等宽字体,或者如果您不喜欢 Courier,则需要一个字体文件,例如 ttf 文件。我在 Google 上搜索了“性感”等宽字体,发现了这些页面:Top 10 Most Popular Monospaced Fonts10 great free monospaced fonts for programming。如果您在 Windows 上工作,您可以选择 Courier New 和 Lucida Sans 打字机,如 knowledge base article 中所述。

    一旦您有了 TTF 文件,只需使用标准 iText 代码即可。在 Lucida Sans Typewriter Regular 的情况下,您需要这样的东西:

    BaseFont bf = BaseFont.createFont(
        "c:/windows/fonts/LTYPE.TTF", BaseFont.CP1250, BaseFont.EMBEDDED);
    Font titleFont = new Font(bf, 20);
    

    注意:始终检查您使用的字体是否支持您要使用的编码。不要假设每种字体都知道每种编码。

    请注意,大多数字体都不是免费的。另见Do I need a license for Windows fonts when using iText?。您可以下载字体这一事实并不意味着您可以免费使用它(iText 也是如此;如果您正在为客户构建应用程序,则必须购买 iText 许可证)。

    【讨论】:

    • 是的,但是COURIER有点老土(像打字机一样)而且我的编码CP1250也不见了,有没有其他办法?
    • 你能说出其他一些等宽字体以便我下载吗?当你想在项目中包含 ttf 文件的过程是什么?
    • 我必须先创建资源文件,然后将 ttf 文件放入其中吗?
    • 什么是资源文件?我假设您在谈论文件夹,而不是文件。将 TTF 文件放在哪里并不重要,只要确保使用正确的 TTF 文件路径即可。 (如果您正在创建 Web 应用程序,请将其添加到资源的适当位置并正确加载。)
    • 鉴于您的后续问题质量低下,我检查了上一个问题。你是不是因为不知道如何创建真正的表格/不知道如何添加标签而引入等宽字体???
    猜你喜欢
    • 2015-06-13
    • 2023-04-06
    • 2021-08-07
    • 2011-02-07
    • 2016-03-01
    • 2011-03-30
    • 2015-05-21
    • 2022-09-23
    • 1970-01-01
    相关资源
    最近更新 更多