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