我有一个我需要嵌入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页面版本使用所需的字体生成正确的输出。请看下面的截图:
但PDF版本不使用自定义字体。
我在Adobe Reader中打开PDF并检查了Properties-&gt; Fonts面板,但它没有列出自定义字体。请看下面的截图:
我查看了CF管理字体管理部分,它显示字体已正确安装但位于我在代码中引用的1的不同位置。我在代码中提到的那个是<app-root>/fonts/*.otf
。请看下面的截图:
另外,在上面的代码中,我使用了字体系列名称 gothamthin 。如果我用 gotham-thin 替换它(其间的连字符与CF Admin中的字体名称相同),那么我得到以下错误。我不确定这是否与任何事情有关,但这只是我认为我会分享的观察结果。
详细信息:此异常的原因是: coldfusion.document.spi.DocumentExportException: 显示java.lang.NullPointerException。消息:发生异常时 执行文件处理。
答案 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中引入的