1

在我的 ColdFusion 应用程序中,当导出 PDF 时,它会显示一个带有错误消息的弹出窗口(标题为 Adob​​e Reader)

“无法提取嵌入字体 'PCBOHZ + TimesNewRomanPS-BoldMT。某些字符可能无法正确显示或打印(或)无法提取 TimesNewRomanPS-BoldMT”

在我的本地环境和所有其他系统中下载相同的 PDF,没有任何问题。此问题仅发生在其中一个客户端系统(Windows 8)中。

<CFDocument>标签用于创建使用font-family = "Helvetica". 此 PDF 包含cfchart图像(包含 ColdFusion 生成的 HTML 代码)。此 PDF 的所有 html 代码在浏览器中呈现为报表仪表板视图。在此仪表板上,用户单击“PDF”按钮,相同的 HTML 内容被放置在CFdocument正文中,并引发警报弹出窗口。

最初我认为它与 Adob​​e 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。

导出pdf时弹出

4

2 回答 2

0

您可以尝试添加FONTEMBED="yes". cfdocument此链接可能会进一步帮助您。参考这篇文章。https://forums.adobe.com/thread/728994?tstart=0

于 2015-11-17T15:37:18.190 回答
0

对于红色 X 问题,如果从本地驱动器中提取 CFChart 图像,我发现 CFPDF/CFDocument 最可靠。例如,将 CFChart 图像写入本地驱动器(RAM 驱动器对此很有用),然后将图像标签写入如下内容:

<img src="file:///ram://myimage.png">

对于字体,您可能不走运。我在字体和 ColdFusion PDF 的完全相同的问题上浪费了太多时间。为什么Adob ​​e 不提供与 CF 集成的 Acrobat 选项完全是个谜。在需要不同字体的情况下,我求助于使用“wkhtmltopdf”创建 PDF。

于 2015-11-20T14:00:26.407 回答