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

发布于 2024-10-11 04:32:45 字数 396 浏览 1 评论 0原文

我正在尝试嵌入 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);

I am trying to embed arial bold font but getting run time error

font ARIALBD.TTF with Identity-H is not recognized

i am embedding the font in purepdf library for generating the pdf file via flex app.

here in the code.

    [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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陌上芳菲 2024-10-18 04:32:45

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;
                }           }

PurePDF will accept only UNICODE Fonts

check your font is a Unicode font or not

try with a Unicode font and also write the extension *.TTF in lowercase *.ttf as the check for extension in PurePDF BaseFont class is as follows.

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;
                }           }
水溶 2024-10-18 04:32:45

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

You need to put it at the root of the project if you reference it this way, if it's in the same package as the class you need to add the package path to the Embed path. The Embed path is relative to the build path not the class which is referencing it, that class is also being referenced from the build path during compilation but it doesn't use paths relative to the class when resolving the Embeds.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文