【问题标题】:embedding fonts in flex for generating pdf file?在flex中嵌入字体以生成pdf文件?
【发布时间】:2011-01-10 20:13:17
【问题描述】:

我正在尝试嵌入 arial 粗体字体,但出现运行时错误

无法识别带有 Identity-H 的字体 ARIALBD.TTF

我将字体嵌入到 purepdf 库中,以便通过 flex 应用程序生成 pdf 文件。

在代码中。

    [Embed( source="ARIALBD.TTF", mimeType="application/octet-stream" )]

    public static const arialb:Class;


if ((style & Font.BOLD) == Font.BOLD)
f = BaseFont.createFont(arialb, BaseFont.IDENTITY_H);

【问题讨论】:

  • 我可以问一个显而易见的问题吗?字体文件 ARIALBD.TTF 是否在您项目的根目录中?或者在与嵌入它的文件相同的目录中?该文件是有效的字体文件吗?
  • 它与嵌入它的类在同一目录中。
  • 嗨,请告诉任何人身份-H
  • 好的,我发现它的身份 -H 是 PDF 文件的编码

标签: apache-flex fonts


【解决方案1】:

PurePDF 将只接受 UNICODE 字体

检查您的字体是否为 Unicode 字体

尝试使用 Unicode 字体,并将扩展名 *.TTF 写成小写 *.ttf,因为 PurePDF BaseFont 类中的扩展名检查如下。

else if ( StringUtils.endsWith( nameBase, ".ttf" ) || StringUtils.endsWith( nameBase, ".otf" ) || nameBase.toLowerCase()
                .indexOf( ".ttc," ) > 0 )           {
                if( encoding == IDENTITY_H || encoding == IDENTITY_V)
                {
                    fontBuilt = new TrueTypeFontUnicode();
                    TrueTypeFontUnicode(fontBuilt).init( name, encoding, embedded, ttfAfm, false, forceRead );
                } else {
                    fontBuilt = new TrueTypeFont();
                    TrueTypeFont(fontBuilt).init( name, encoding, embedded, ttfAfm, false, forceRead );
                    TrueTypeFont(fontBuilt).fastWinansi
= encoding == CP1252;
                }           }

【讨论】:

    【解决方案2】:

    如果你这样引用它,你需要把它放在项目的根目录,如果它和类在同一个包中,你需要将包路径添加到Embed路径中。 Embed 路径相对于构建路径而不是引用它的类,该类也在编译期间从构建路径引用,但在解析嵌入时它不使用相对于该类的路径。

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 2020-07-07
      • 2010-10-11
      • 2018-02-13
      • 1970-01-01
      相关资源
      最近更新 更多