【问题标题】:iText Font StrategyiText 字体策略
【发布时间】:2014-06-27 16:11:55
【问题描述】:

我有一个 Web 应用程序,它将从数据生成 PDF 并允许用户下载。我们有一个自定义字体,所以我要注册四个字体文件(常规、粗体、斜体和粗斜体 ttf 文件)。

  1. 这有必要吗?我可以只使用常规字体文件并通过字体类设置粗细/样式,还是需要所有文件?看起来它工作正常,但我仍在学习。

  2. 管理这些不同字体以放入我的文档中的好策略或模式是什么?从 Java 的角度来看,有人在这方面做了很多工作吗?

【问题讨论】:

    标签: java fonts itext


    【解决方案1】:

    你没有告诉我们你是如何注册你的字体,也没有告诉我们你是如何使用它们的,所以让我告诉你我将如何工作(我是 iText 的原始开发者)。如果您使用这 4 种字体,最好的方法是像这样注册它们:

    BaseFont bfRegular = BaseFont.createFont(regularTTF, BaseFont.IDENTITY_H, BaseFont_EMBEDDED);
    BaseFont bfBold = BaseFont.createFont(boldTTF, BaseFont.IDENTITY_H, BaseFont_EMBEDDED);
    BaseFont bfItalic = BaseFont.createFont(italicTTF, BaseFont.IDENTITY_H, BaseFont_EMBEDDED);
    BaseFont bfBoldItalic = BaseFont.createFont(boldItalicTTF, BaseFont.IDENTITY_H, BaseFont_EMBEDDED);
    

    每当使用低级操作添加内容时,我都会使用这些 BaseFont 实例。

    那么我会这样做:

    Font fRegular = new Font(bfRegular, 12);
    Font fBold = new Font(bfBold, 12);
    Font fItalic = new Font(bfItalic, 12);
    Font fBoldItalic = new Font(bfBoldItalic, 12);
    

    每当我需要创建高级对象(例如Paragraph)时,我都会使用这些字体。

    当然,我可能还需要这样的东西:

    Font fRegularSmall = new Font(bfRegular, 9);
    Font fBoldSmall = new Font(bfBold, 9);
    Font fItalicSmall = new Font(bfItalic, 9);
    Font fBoldItalicSmall = new Font(bfBoldItalic, 9);
    Font fRegularBig = new Font(bfRegular, 20);
    Font fBoldBig = new Font(bfBold, 20);
    Font fItalicBig = new Font(bfItalic, 20);
    Font fBoldItalicBig = new Font(bfBoldItalic, 20);
    

    通常,我创建一个辅助类,在其中我只创建一次 BaseFont 对象(它们需要被重用),并为 Font 对象创建 getter。

    【讨论】:

      猜你喜欢
      • 2018-12-10
      • 2017-01-07
      • 2017-10-12
      • 2010-10-29
      • 1970-01-01
      • 2023-03-28
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多