cfchart 不以 PDF 格式打印

cfchart not printing in PDF

我正在尝试使用 cfdocument 从 HTML 打印 PDF。当我通过本地主机访问它时,代码工作正常,但是当我使用静态 IP 在同一台服务器上在线测试它时,它会超时。

我试过 cfhtmltopdf 它没有超时,但它没有生成图表并显示 "image missing icon"。既不会生成图表,也不会生成图像。文字打印得很好。 使用图像或图表生成 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/logo.png 解析为类似 .如果(例如)生成 cfm 的 pdf 位于非根文件夹中,服务器可能会将其解析为 http://blah.com/ 某个文件夹 /images/logo.png - 这自然行不通,因为那里没有 "images" 文件夹。

其他可能性?您的服务器无法解析 "internal" natted 地址,或者正在尝试通过防火墙接口使用 外部 非 natted 地址。

幸运的是,几乎所有这些问题都可以轻松测试或解决。您还可以通过简单地使用 file method 将任何资源包含到您的 PDF 文件中来避免头痛。

有关分辨率问题的更多信息,请参阅我在 Network address resolution and Cfdocument 上的 post。

希望对您有所帮助!祝你好运。

我在使用 cfhtmltopdf 时遇到了类似的问题。就我而言,我使用的是 cfimage 标签,而且图像偶尔会在 PDF 文档中呈现。

我怀疑 cfhtmltopdf 标记的呈现是异步发生的,在与该标记内可能发生的任何呈现(例如,cfimage 或 cfchart)不同的线程中。所以cfhtmltopdf标签将完成渲染,它不会有cfimage或cfchart渲染的结果,所以它显示"broken image"图标,因为它找不到源。

所以这个基于 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