0

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

我试过cfhtmltopdf它没有超时,但它没有生成图表并显示“图像丢失图标”。既不生成图表也不生成图像。文本打印得很好。使用图像或图表时,生成 PDF 大约需要 20 到 30 秒。

我在 CF11 32bit 和 6bit 上试过这个,都有同样的问题。即使是最简单的代码也失败了:

<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>
4

2 回答 2

4

您的问题可能与图像路径的分辨率有关。尝试绝对路径 (http://) 或文件路径 (file:\) ...尝试从服务器本身的桌面解析图像。

请记住,服务器内部必须将您的 images/logo.png 解析为类似 . 如果(例如)您的 pdf 生成 cfm 位于不是根目录的文件夹中,则服务器可能会将其解析为http://blah.com/某个文件夹/images/logo.png - 这自然不会起作用,因为有那里没有“图像”文件夹。

其他可能性?您的服务器无法解析“内部”自然地址,或者试图通过防火墙接口使用外部非自然地址。

幸运的是,几乎所有这些问题都可以轻松测试或解决。您还可以通过简单地使用文件方法将任何资源包含到您的 PDF 文件中来省去您的麻烦。

有关解决问题的更多信息,请参阅我关于网络地址解析和 Cfdocument的帖子。

希望这可以帮助!祝你好运。

于 2016-06-02T19:37:30.727 回答
1

我遇到了与 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

于 2016-08-24T21:40:52.320 回答