【问题标题】:iTextPdf: Using a non-embedded fontiTextPdf:使用非嵌入字体
【发布时间】:2012-08-16 21:29:36
【问题描述】:

我使用 Java 和 iTextPdf 创建了一个表格,其中列出了一堆单元格。我不太清楚如何更改这些单元格内文本的字体。这是为我的孩子准备的,所以我正在尝试使用 Comic Sans MS。一切编译和运行都很好,但我得到了一个通用字体(可能是 Helvetica 或类似的字体)。

有人知道如何生成这样的字体吗?谢谢!

这是我写的缩小版:

import com.itextpdf.text.FontFactory; 
import com.itextpdf.text.pdf.FontSelector;

public static PdfPTable createTable() {
        FontSelector selector = new FontSelector();
        selector.addFont(FontFactory.getFont("Comic Sans MS"));
        PdfPTable table = new PdfPTable(3);
        PdfPCell cell;
        Phrase ph;

        ph = selector.process("My Title");
        cell = new PdfPCell(ph);
        table.addCell(cell);
        return table;

【问题讨论】:

  • 可能是您的FontFactory 不知道“Comic Sans MS”字体。 FontFactory.getRegisteredFonts() 应该返回 FontFactory 知道如何呈现的所有字体名称的列表。
  • 谢谢。你是对的。遍历 getRegisteredFonts() 返回的所有字体,没有提到 Comic Sans MS。通过查看他们的文档,我几乎已经知道了这一点。然而,Comic Sans MS 在我的系统字体文件夹中。有没有办法利用我系统上的字体,或者我是否仅限于 FontFactory 中的嵌入字体?谢谢!

标签: java itextpdf


【解决方案1】:

您可以将您的字体导入FontFactory,然后将其用作

    String filename = "Comic Sans MS.ttf";
    FontFactory.register(filename, filename);
    Font font = FontFactory.getFont(filename, BaseFont.CP1252, BaseFont.EMBEDDED);

这也会将字体嵌入到 PDF 文件中,因此即使目标 PDF 阅读器没有安装此字体,它也能正常工作。

【讨论】:

    猜你喜欢
    • 2014-05-23
    • 2016-07-12
    • 2016-08-29
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多