Fonts 自定义字体嵌入在CFDOCUMENT Coldfusion 11中不起作用
我有一个自定义的Gotham字体,需要嵌入到PDF文档中。我在谷歌上搜索并尝试了几种方法来实现这一点,但都不起作用。我正试图让它在带有CF11和Apache2.2服务器的本地主机上工作 这就是我的代码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
<!--- 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中,为了向后兼容,它仍然存在。