我正在尝试使用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>
您的问题可能是图像路径的分辨率。请尝试绝对路径(http://)或文件路径(file:\)。。。尝试从服务器本身的桌面解析图像。
请记住,服务器内部必须将您的images/log.png解析为类似的内容。如果(例如)您的pdf生成cfm位于非根文件夹中,则服务器可能会将其解析为http://blah.com/一些文件夹/images/logo.png-它自然不会工作,因为那里没有"images"文件夹。
其他可能性?您的服务器无法解析"内部"属性地址,或者正试图通过防火墙接口使用外部非属性地址。
幸运的是,几乎所有这些问题都可以很容易地测试或解决。您还可以通过简单地使用file方法将任何资源包含到PDF文件中来省去麻烦。
有关解决问题的更多信息,请参阅我在网络地址解决和Cfdocument上的帖子。
希望这能有所帮助!祝你好运
cfhtmltopdf也遇到过类似的问题。在我的案例中,我使用了一个cfimage标记,并且这些图像偶尔会在PDF文档中呈现。
我怀疑cfhtmltopdf标记的呈现是异步发生的,在一个独立的线程中,与该标记内可能发生的任何呈现(例如,cfimage或cfchart)不同。因此,cfhtmltopdf标记将完成渲染,并且它不会有cfimage或cfchart的渲染结果,因此它显示"已损坏的图像"图标,因为它找不到源。
因此,这个基于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