我尝试使用cfdocument从HTML打印PDF。当我通过localhost访问它时,代码工作正常,但是当我使用静态IP在同一台服务器上在线测试它时会超时。
我尝试cfhtmltopdf
它没有超时但它没有生成图表并显示"图像丢失图标"。既不生成图表也不生成图像。文字打印得很好。 使用图像或图表时,生成PDF需要20到30秒。
我在CF11 32位和6位上都试过这个问题。 即使是最简单的代码也会失败:
<cfhtmltopdf>
<!DOCTYPE html>
<html>
<body>
<div class="pdf_logo" style="margin-bottom: 20px;">
<a href="##"><img src="images/logo.png" width="180"></a>
</div>
</body>
</html>
</cfhtmltopdf>
答案 0 :(得分:3)
您的问题可能是解决图像路径问题。尝试绝对路径(http://)或文件路径(文件:\)...尝试从服务器本身的桌面解析图像。
请记住,服务器内部必须将images / logo.png解析为类似的内容。如果(例如)您的pdf生成cfm位于非root用户的文件夹中,服务器可能会将其解析为http://blah.com/ 某个文件夹 /images/logo.png - 这自然会赢得&#因为那里没有&#34;图像&#34;那里的文件夹。
其他可能性?您的服务器无法解析&#34;内部&#34; nat地址,或者试图通过防火墙接口使用外部非本地地址。
幸运的是,几乎所有这些问题都可以轻松测试或解决。只需使用file method将任何资源包含到PDF文件中,您也可以避免头痛。
有关解决问题的详情,请参阅Network address resolution and Cfdocument上的帖子。
希望这有帮助!祝你好运。
答案 1 :(得分:1)
我在cfhtmltopdf遇到了类似的问题。就我而言,我使用的是cfimage标签,而且这些图像是偶尔在PDF文档中呈现的。
我怀疑cfhtmltopdf标记的呈现是异步发生的,在与该标记内可能发生的任何渲染的单独线程中发生(例如,cfimage或cfchart)。所以cfhtmltopdf标签将完成渲染,并且它不会获得cfimage或cfchart渲染的结果,因此它会显示&#34;破碎的图像&#34;图标,因为它无法找到来源。
因此,基于ColdFusion文档†的此解决方案可能会对您有所帮助:
<!--- 1. Generate the chart as a jpeg image. --->
<cfchart name="myChart" format="jpg">
<cfchartseries type="pie">
<cfchartdata item="New Vehicle Sales" value=500000>
<cfchartdata item="Used Vehicle Sales" value=250000>
<cfchartdata item="Leasing" value=300000>
<cfchartdata item="Service" value=400000>
</cfchartseries>
</cfchart>
<!--- 2. Write the jpeg image to a temporary directory. --->
<cffile
action="write"
file="#ExpandPath('/charts/vehicle.jpg')#"
output="#myChart#" />
<!--- 3. Generate the PDF file. --->
<cfhtmltopdf>
<!DOCTYPE html>
<cfoutput>
<html>
<body>
<div class="chart">
<!--- This image tag refers to the file created by cffile --->
<img src="/charts/vehicle.jpg" />
</div>
</body>
</html>
</cfoutput>
</cfhtmltopdf>
†基于此处的示例:http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7934.html