在flex中嵌入字体以生成pdf文件?

时间:2011-01-07 12:26:49

标签: flex fonts

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

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

我将字体嵌入purepdf库中,以便通过flex app生成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);

2 个答案:

答案 0 :(得分: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;
                }           }

答案 1 :(得分:0)

如果您以这种方式引用它,则需要将它放在项目的根目录下,如果它与您需要将包路径添加到Embed路径所在的类相同的包中。 Embed路径是相对于构建路径而不是引用它的类,该类在编译期间也从构建路径引用,但在解析Embeds时它不使用相对于类的路径。