我遇到使用ColdFusion进行服务器到服务器调用的问题。
假设我有两台服务器,每台服务器都有一个文件:
www.Content.com/webpage.cfm
www.Badge.com/badge.jpg
我的源代码如下所示:
<cfdocument format="pdf" pagewidth="11" pageheight="8.5">
This is a simple PDF that was created to show issues with content generation on the server. This PDF uses an http:// reference to the badge server to show an image of a badged team member.
<BR />
<BR />
<img src="https://www.badge.com/badge.jpg" />
</cfdocument>
如果我删除了CFDOCUMENT标签,页面会完美呈现,JPG图像会完全显示。但是,当我将页面呈现为PDF时,文档不包含JPG文件,并且在图像不应该出现的地方会出现大而丑陋的红色X.
我的网络管理员建议,虽然用户可以对徽章和内容进行身份验证,但徽章服务器可能无法对内容进行身份验证,反之亦然。如何指示coldfusion从当前登录的用户获取用户权限并提取图像?
我研究了使用CFIMAGE并将图像文件保存到内容RAM中,然后在PDF渲染之前将图像写入变量。这似乎产生了一个错误。
提前感谢您的反馈。
答案 0 :(得分:1)
图像总是不同吗?否则,您可能希望在本地将图像保存在服务器上,并使用属性localURL
http://www.ravenglass.com/blog/index.cfm/2010/6/9/Including-Images-in-a-PDF-created-in-CFDOCUMENT
另一种可能性可能是SSL不被CF“信任”。您可以尝试使用CFHTTP获取该图像URL,您将知道是否是这种情况。见:Coldfusion: CFHTTP with SSL encrypted Page (https://) - got an error
答案 1 :(得分:1)
CFHTTP不需要通过URL抓取图像并将其保存在本地。试试这个:
<cfscript>
myImg = imageRead("http://i.mycommentspace.com/23/2371.jpg") ;
imageWrite(myImg,"c:\myimage.jpg",0.8);
</cfscript>
BTW - 当你使用本地路径时,CFDOCUMENT中的图像效果最好,所以一旦你抓住图像,试试,例如<img src="c:/myimage.jpg" />
答案 2 :(得分:0)
localUrl="yes"
(或=true
)因https而失败,而生成pdfs的CF非常挑剔。
<img src="file:\\\#replace(getCurrentTemplatePath(),"my.cfm")#images\my.png">
您必须介意遍历目录才能到达\ images文件夹。