在我的ColdFusion应用程序中,导出PDF时,它会显示一个弹出窗口(标题为Adobe Reader),并显示错误消息
“无法提取嵌入字体'PCBOHZ + TimesNewRomanPS-BoldMT。 某些字符可能无法正确显示或打印(OR) 提取TimesNewRomanPS-BoldMT“
在我的本地环境和所有其他系统中下载相同的PDF,没有任何问题。此问题仅发生在客户端系统之一(Windows 8)中。
<CFDocument>
标记用于创建使用font-family = "Helvetica"
的PDF。此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请求(即使是对自己)。由于这个图像requsets得到404状态,所以在下载的PDF中显示默认的HTML IMG标记红色十字标记。一个有价值的coldfusion主题URL,有一个解决方案通过维护HOSTS文件条目工作http请求 - 可以添加一个条目您的HOSTS文件的内部IP。请分享您对此问题的看法&amp;建议我采取什么方法来解决这个问题。
答案 0 :(得分:0)
您可以尝试在FONTEMBED="yes"
中添加cfdocument
。此链接可能会进一步帮助您。请参阅这篇文章。 https://forums.adobe.com/thread/728994?tstart=0
答案 1 :(得分:0)
对于红色X问题,我发现CFPDF / CFDocument在使用CFChart图像时最可靠,如果从本地驱动器中提取它们。例如,将CFChart映像写入本地驱动器(RAM驱动器适用于此),然后编写图像标记,如:
<img src="file:///ram://myimage.png">
对于字体,你可能会运气不好。对于与字体和ColdFusion PDF完全相同的问题,我浪费了太多时间。为什么在地球上 Adobe 不提供与CF的集成Acrobat选项是一个完全的谜。如果需要使用不同的字体,我会使用'wkhtmltopdf'来创建PDF。
答案 2 :(得分:0)