Coldfusion CFDOCUMENT создает красный X
У меня проблема с межсерверным вызовом с 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 и сохранение файла изображения в оперативной памяти, а затем записал изображение в переменную перед рендерингом PDF. Это похоже на ошибку.
Заранее благодарю за отзыв.
3 ответа
Изображение всегда отличается? в противном случае, вы можете сохранить изображение на вашем сервере локально и использовать атрибут localURL
http://www.ravenglass.com/blog/index.cfm/2010/6/9/Including-Images-in-a-PDF-created-in-CFDOCUMENT
Другая возможность может заключаться в том, что CF не доверяет SSL. Вы можете попробовать получить этот URL-адрес изображения, используя CFHTTP, и вы узнаете, так ли это. см. : Coldfusion: CFHTTP с зашифрованной страницей SSL (https://) - получена ошибка
CFHTTP не нужно захватывать изображение по URL и сохранять его локально. Попробуй это:
<cfscript>
myImg = imageRead("http://i.mycommentspace.com/23/2371.jpg") ;
imageWrite(myImg,"c:\myimage.jpg",0.8);
</cfscript>
Кстати, изображения в CFDOCUMENT имеют тенденцию работать лучше всего, когда вы используете локальные пути, поэтому, как только вы захватили изображение, попробуйте, например, <img src="c:/myimage.jpg" />
localUrl="yes"
(или же =true
) терпит неудачу для https, для которого CF, генерирующий pdfs, болезненно привередлив.
<img src="file:\\\#replace(getCurrentTemplatePath(),"my.cfm")#images\my.png">
Вам придется возиться с перемещением вверх и вниз по каталогам, чтобы попасть в папку \images.