cfchart不以PDF格式打印

时间:2016-06-02 19:04:16

标签: pdf coldfusion coldfusion-11 cfdocument cfchart

我尝试使用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>

2 个答案:

答案 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