【问题标题】:cfimage from binary in cfdocumentcfdocument 中二进制文件的 cfimage
【发布时间】:2013-06-28 19:33:34
【问题描述】:

我正在动态编写 PDF,并在文档上创建二维码用于电子票务

我将我的 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:/// 有关系,我只是不够博学,不知道为什么

【问题讨论】:

    标签: coldfusion cfdocument cfimage


    【解决方案1】:

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

    尝试 ,注意它不应该从根路径开始,而是相对于你的文件。

    更新

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

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

    【讨论】:

    • 问题不在于 images/header.png,而在于使用 cfimage 标记将二进制文件转换为图像,从而在 CfFileservlet 上创建一个临时文件
    • 对不起,我误读了你的问题。我已经更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 2021-12-04
    相关资源
    最近更新 更多