在我的 ColdFusion 应用程序中,当导出 PDF 时,它会显示一个带有错误消息的弹出窗口(标题为 Adobe Reader)
“无法提取嵌入字体 'PCBOHZ + TimesNewRomanPS-BoldMT。某些字符可能无法正确显示或打印(或)无法提取 TimesNewRomanPS-BoldMT”
在我的本地环境和所有其他系统中下载相同的 PDF,没有任何问题。此问题仅发生在其中一个客户端系统(Windows 8)中。
该<CFDocument>
标签用于创建使用font-family = "Helvetica"
. 此 PDF 包含cfchart
图像(包含 ColdFusion 生成的 HTML 代码)。此 PDF 的所有 html 代码在浏览器中呈现为报表仪表板视图。在此仪表板上,用户单击“PDF”按钮,相同的 HTML 内容被放置在CFdocument
正文中,并引发警报弹出窗口。
最初我认为它与 Adobe Acrobat Reader 有关。后来我发现这不是PDF创建的问题。这似乎是一些 CSS 语法问题,我给出了错误的字体系列名称。没有 PCBOHZ + TimesNewRomanPS-BoldMT
字体系列名称。我需要在 CF admin fonts.cfm 文件中导入该字体 ttf 文件。但我怀疑这是否与 css 样式有关,相同的 HTML 不应该在客户端浏览器中呈现,对吗?请分享你的想法。
另一个问题是缺少 CFDOCUMENT 图像
在生成的 PDF 中,图像显示为红色十字标记,在创建 PDF 时,CFDOCUMENT 对 Coldfusion 服务器进行 HTTP URL 调用,以从 CF 虚拟文件夹 CFIDE/CFSERVLET 中获取图像(因为这些图像由基于 cfchart 标签的保存在此文件夹中在 CF 管理员的图表设置上),在谷歌中我发现这个问题的原因可能是在对图像的 HTTP 请求时,由于 ColdFusion 位于防火墙后面,因此 CFPDF 无法发送任何 HTTP 请求(甚至虽然对自己)。由于此图像请求获得 404 状态,因此在下载的 PDF 中它显示默认 HTML IMG 标记红色十字标记。有价值的coldfusion主题URL之一,有一个通过维护主机文件条目来处理http请求的解决方案 - 可以添加一个条目HOSTS 文件的内部 IP。