自定义字体嵌入在CFDOCUMENT Coldfusion 11中不起作用

时间:2017-08-07 08:27:43

标签: fonts coldfusion pdf-generation coldfusion-11 cfdocument

我有一个我需要嵌入PDF文档的Custom Gotham字体。我用谷歌搜索并尝试了几种方法来做到这一点,但它不起作用。我试图使用CF11和Apache 2.2服务器在localhost上工作。

这是我的代码

<!--- The HTML Page code --->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Test</title>
    <meta http-equiv=Content-Type content="text/html; charset=windows-1252" />
    <meta name=Generator content="Microsoft Word 12 (filtered)" />
    <style type="text/css">
        @font-face
        {
            font-family: 'gothamthin';
            src: url('../fonts/Gotham-Thin.otf');    
        }
    </style>
</head>
<body>
    <span style="font-size:22pt;font-family:'gothamthin'">13 First Street</span>
</body>
</html>

<!--- the PDF Generation Code --->
<cfdocument format="PDF" fontembed="yes" overwrite="true" filename="test.pdf">
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Test</title>
        <meta http-equiv=Content-Type content="text/html; charset=windows-1252" />
        <meta name=Generator content="Microsoft Word 12 (filtered)" />
        <style type="text/css">
            @font-face
            {
                font-family: "gothamthin";
                src: url('../fonts/Gotham-Thin.otf');    
            }
        </style>
    </head>
    <body>
        <span style='font-size:22pt;font-family:"gothamthin"'>13 First Street</span>
        <br/><br/>
        <span>
            <font face="gothamthin" size="22">
                13 First Street with font tag
            </font>
        </span>
    </body>
    </html>
</cfdocument>

HTML页面版本使用所需的字体生成正确的输出。请看下面的截图:

enter image description here

但PDF版本不使用自定义字体。

enter image description here

我在Adobe Reader中打开PDF并检查了Properties-&gt; Fonts面板,但它没有列出自定义字体。请看下面的截图:

enter image description here

我查看了CF管理字体管理部分,它显示字体已正确安装但位于我在代码中引用的1的不同位置。我在代码中提到的那个是<app-root>/fonts/*.otf。请看下面的截图: enter image description here

另外,在上面的代码中,我使用了字体系列名称​​ gothamthin 。如果我用 gotham-thin 替换它(其间的连字符与CF Admin中的字体名称相同),那么我得到以下错误。我不确定这是否与任何事情有关,但这只是我认为我会分享的观察结果。

  

详细信息:此异常的原因是:   coldfusion.document.spi.DocumentExportException:   显示java.lang.NullPointerException。消息:发生异常时   执行文件处理。

1 个答案:

答案 0 :(得分:0)

我遇到了使用相同字体的完全相同的问题。获取“ NullPointerException”消息。通过使用FontForge将每种OTF字体转换为TTF最终解决了问题。找到了一些帖子,说它即使在CF管理员中正确显示,也无法使用OTF字体。我更改了TTF字体的安全性权限以匹配字体目录中的其他字体,但是我不确定是否需要-我添加了一个名为“ ALL APPLICATION PACKAGES”的用户。我将TTF字体放在Windows字体目录中,然后可以在CFDOCUMENT PDF中使用它们。我必须在CF管理员中使用“ Font Face”列的名称-屏幕截图中的第二列。因此,我能够在CFDOCUMENT HTML区域中使用类似的方法

<div style="font-family: gotham black;">Quick brown fox</div>
<div style="font-family: gotham medium;">Quick brown fox</div>
<div style="font-family: gotham light;">Quick brown fox</div>

我还没有做很多工作,但是您可能还想尝试CFHTMLtoPDF,我相信它可以在WKHTMLTOPDF引擎上运行。该标签是在CF11中引入的