我正在动态编写PDF,并在文档上创建QR码以用于电子票务目的
我设置我的cfdocument localurl = yes来包含一个不同的图像,这很好用,但由于我使用API调用来获取qrCode的二进制文件,使用cfimage来显示图像,它只显示一个红色X
<cfdocument format="PDF" overwrite="Yes" localUrl="yes" pageType = "letter">
<body>
<cfoutput>
<section id="header">
<img src="file:///#ExpandPath('images/header.png')#"/>
<cfimage action="writeToBrowser" source="#rc.qrCode#" />
</cfoutput>
</body>
</html>
</cfdocument>
源变量rc.qrCode是一个完美的二元响应,直到我放在cfdocument中,它生成一个像http://mysite/CFFileServlet/_cf_image/_cfimg-7945382145198648283.PNG
这样的url作为图像源
我确信这与localurl和file:///有关,我只是一个不知情的知道为什么
答案 0 :(得分:0)
不需要使用物理路径而是使用页面的相对路径。 例如 如果您在根文件夹的index.cfm和图像文件夹内的图像
中编码尝试&lt; img src =“images / header.png”&gt; ,请注意,它不应该以根路径开头而是相对于您的文件。
<强>更新强>
writetoBrowser在内部将文件写入硬盘驱动器的临时位置(局部地,C:\ ColdFusion10 \ cfusion \ tmpCache \ CFFileServlet),并将其呈现给浏览器时使用相对路径,如“/CFFileServlet/_cf_image/_cfimg1592404668342998556.PNG”,你可以说ColdFusion在内部将CFFileServlet目录映射到所有coldfusion站点,但是注意前导斜杠,这会使localurl = true出现问题。由于localurl = true要么需要物理路径或文档的相对路径。
好主意不是使用writetobrowser,而是可以将相同的图像写入您所在位置的硬盘,并在img标记中提供物理路径。我不这样做,因为当你使用writetobrowser属性时ColdFusion内部做同样的事情会有任何性能问题:)