1

我正在动态编写 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 之前可以完美运行,它会生成一个像这样的 urlhttp://mysite/CFFileServlet/_cf_image/_cfimg-7945382145198648283.PNG作为图像源

我确信这与 localurl 和 file:/// 有关系,我只是知识渊博,不知道为什么

4

1 回答 1

0

不需要使用物理路径,而是使用页面的相对路径。例如,如果您在根文件夹的 index.cfm 和图像文件夹中的图像中编码

尝试 <img src="images/header.png"> ,请注意,它不应以根路径开头,而是相对于您的文件。

更新

writetoBrowser 在内部将文件写入硬盘驱动器到它的临时位置(通常是 C:\ColdFusion10\cfusion\tmpCache\CFFileServlet),并在将其渲染到浏览器时使用相对路径,如“/CFFileServlet/_cf_image/_cfimg1592404668342998556.PNG”,你可以说ColdFusion 在内部将 CFFileServlet 目录与所有 Coldfusion 站点映射,但请注意前导正斜杠,这会导致 localurl=true 出现问题。由于 localurl=true 要么需要物理路径,要么需要文档的相对路径。

好主意是代替 writetobrowser,您可以将相同的图像写入您所在位置的硬盘驱动器并在 img 标签中提供物理路径。我不这样做会有任何性能问题,因为当您使用 writetobrowser 属性时,ColdFusion 在内部做同样的事情:)

于 2013-06-29T03:24:28.713 回答