【问题标题】:cfchart not printing in PDFcfchart 不以 PDF 格式打印
【发布时间】:2016-08-25 05:40:52
【问题描述】:

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

【问题讨论】:

  • 如果您忘记了 pdf 部分,只是尝试在网络浏览器中渲染图像,问题会消失还是仍然存在?
  • 抱歉回复晚了,@DanBracuk 没有 cfdocument 可以正常工作。

标签: pdf coldfusion coldfusion-11 cfdocument cfchart


【解决方案1】:

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

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

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

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

有关解决问题的更多信息,请参阅我在 Network address resolution and Cfdocument 上的帖子。

希望这会有所帮助!祝你好运。

【讨论】:

  • 感谢您的回复,即使我删除了图像,我有一个由 cfm 生成的 cfchart,它仍然会产生与 cfchart 相同的问题。不过这些信息很有帮助。我是 CF 新手。
  • 我使用了 localURl=true 并且图像现在正在显示。但是图表没有显示,而是显示了一个红十字图标。对此有什么想法吗?
【解决方案2】:

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

【讨论】:

  • 感谢您的回复,已经有一段时间了,但我会尝试您的建议。希望它对我未来的问题有所帮助。
猜你喜欢
  • 2018-02-24
  • 2012-06-15
  • 1970-01-01
  • 2015-09-23
  • 1970-01-01
  • 2021-09-10
  • 2015-01-30
  • 2015-08-15
  • 2012-06-04
相关资源
最近更新 更多