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

Fonts 自定义字体嵌入在CFDOCUMENT Coldfusion 11中不起作用,fonts,coldfusion,pdf-generation,coldfusion-11,cfdocument,Fonts,Coldfusion,Pdf Generation,Coldfusion 11,Cfdocument,我有一个自定义的Gotham字体,需要嵌入到PDF文档中。我在谷歌上搜索并尝试了几种方法来实现这一点,但都不起作用。我正试图让它在带有CF11和Apache2.2服务器的本地主机上工作 这就是我的代码 <!--- The HTML Page code ---> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h

我有一个自定义的Gotham字体,需要嵌入到PDF文档中。我在谷歌上搜索并尝试了几种方法来实现这一点,但都不起作用。我正试图让它在带有CF11和Apache2.2服务器的本地主机上工作

这就是我的代码

<!--- 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>

试验
@字体
{
字体系列:“Gothamshin”;
src:url('../font/Gotham Thin.otf');
}
第一街13号
试验
@字体
{
字体系列:“Gothamshin”;
src:url('../font/Gotham Thin.otf');
}
第一街13号


13第一街带字体标签
HTML页面版本使用所需字体生成正确的输出。请参见下面的屏幕截图:

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

我在AdobeReader中打开了PDF,并检查了属性->字体面板,它没有列出自定义字体。请参见下面的屏幕截图:

我检查了CF Admin字体管理部分,它显示字体已正确安装,但安装位置与我在代码中提到的1不同。我在代码中提到的是

另外,在上面的代码中,我使用了字体家族名称Gothamshin。如果我将其替换为gotham thin(中间有一个连字符,与CF Admin中的字体名称相同),则会出现以下错误。我不确定这是否与任何事情有关,但这只是我想分享的一个观察结果

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


我遇到了同样的问题,同样的字体。正在获取“NullPointerException”消息。最终通过使用FontForge将每个OTF字体转换为TTF进行修复。发现一些帖子说它不适用于OTF字体,即使它在CF admin中正确显示。我更改了TTF字体的安全权限以匹配字体目录中的其他字体,但我不确定是否需要这样做-我添加了一个名为“所有应用程序包”的用户。我将TTF字体放在Windows字体目录中,然后可以在CFPDF文档中使用它们。我不得不在CF管理中使用“字体脸”列的名称,这是屏幕截图中的第二列。因此,我能够在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中引入的,我遇到了完全相同的问题,使用了相同的字体。正在获取“NullPointerException”消息。最终通过使用FontForge将每个OTF字体转换为TTF进行修复。发现一些帖子说它不适用于OTF字体,即使它在CF admin中正确显示。我更改了TTF字体的安全权限以匹配字体目录中的其他字体,但我不确定是否需要这样做-我添加了一个名为“所有应用程序包”的用户。我将TTF字体放在Windows字体目录中,然后可以在CFPDF文档中使用它们。我不得不在CF管理中使用“字体脸”列的名称,这是屏幕截图中的第二列。因此,我能够在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中引入的

多年来,我使用正确安装的字体w/CFDocument时遇到了许多问题。因此,我开始使用WKTHMLTOPDF(免费;Windows;命令行)在CF8-2016中执行所有PDF生成。结果非常好、更快、更小,我可以使用任何WebFont和SVG徽标。(CFDocument使用了一个非常过时的HTML-to-PDF库。)好的,谢谢@JamesMoberg,我一定会考虑将代码迁移到WKHTMLTOPDF,如果没有其他方法可以使用的话。FWIW,将来发现这一点的人应该注意CF11及以上版本(从2014年起)内置了WKHTMLTOPDF。您可以使用一个名为cfhtmltopdf的新标记(代替您对cfdocument的使用)来访问它。它在属性、子标签和变量方面有所不同,所以这就是为什么它不是“cfdocument的新属性”,即使在CF2018中,为了向后兼容,它仍然存在。多年来,使用正确安装的字体w/cfdocument,我遇到了许多问题。因此,我开始使用WKTHMLTOPDF(免费;Windows;命令行)在CF8-2016中执行所有PDF生成。结果非常好、更快、更小,我可以使用任何WebFont和SVG徽标。(CFDocument使用了一个非常过时的HTML-to-PDF库。)好的,谢谢@JamesMoberg,我一定会考虑将代码迁移到WKHTMLTOPDF,如果没有其他方法可以使用的话。FWIW,将来发现这一点的人应该注意CF11及以上版本(从2014年起)内置了WKHTMLTOPDF。您可以使用一个名为cfhtmltopdf的新标记(代替您对cfdocument的使用)来访问它。它在属性、子标签和变量方面有所不同,所以这就是为什么它不是“cfdocument的新属性”,即使在CF2018中,为了向后兼容,它仍然存在。