Динамический pdf-cfdocument + cfcontent + изображение + вложение электронной почты
Как изображения могут быть загружены в динамически сгенерированный pdf (cfdocument)? В том, что PDF не хранится HDD. PDF должен быть отправлен по электронной почте, и баран очищен. Изображения хранятся вне папки wwwroot. Если это необходимо, PDF-файл может быть сохранен на жестком диске, присоединен, отправлен по электронной почте, затем удален, но выбрал бы его не хранить на жестком диске.
c: \ coldFusion9 \ imgs \ - это каталог
Образец:
<cfdocument format="PDF" localurl="true">
<cfoutput> #vars#</cfoutput>
</cfdocument>
я использовал
<img src="">
внутри cfdocument, и работает, если изображение находится в папке wwwroot (http...), но не когда изображение находится за пределами wwwroot ("c:\coldFusion9\imgs#image#.png" или "../imgs" /#image#.png").
Я полагаю, что cfcontent идеален
Итак, внутри cfdocument я делаю это:
<cffile action="readbinary" file="c:\coldFusion9\imgs\#image#.png" variable="img">
<cfcontent type="image/jpg" variable="#img#" >
В результате изображение загружается на экран, а не в PDF.
Хотел бы написать письмо в формате PDF в качестве приложения к электронному письму. PDF не нужно отображать на экране, но для целей тестирования мы можем позволить ему отображать на экране, чтобы узнать, было ли загружено изображение или нет, либо называя, либо не называя cfdocument. PDF отображается при удалении имени, он не отображается при наличии имени.
Ценю твою помощь.
2 ответа
Если я правильно понимаю ваш вопрос. Вы хотите: 1. Захватить изображение из папки за пределами вашего корневого каталога 2. Поместить изображение в документ cfd 3. Прикрепить документ cfmail к cfmail
если это так, вам нужен cfimage вместо img, а остальное вы можете найти на сайте Бена Наделя http://www.bennadel.com/blog/1700-Ask-Ben-Creating-A-PDF-And-Attaching-It-To-An-Email-Using-ColdFusion.htm
или разверните фрагмент кода ниже.
<cfdocument format="pdf" name="mydoc">
<cfimage action="writeTobrowser" source="c:\temp\test.png" >
</cfdocument>
<cfmail
from="x@y.com"
to="y@x.com"
subject="this is it">
<cfmailparam
file="mydoc.pdf"
type="application/pdf"
content="#mydoc#"/>
</cfmail>
Пара замечаний для уточнения:
cfdocument использует HTTP-соединение для захвата изображений, поэтому вы не можете получить что-либо вне webroot. По моему опыту, относительные пути проблематичны, поэтому лучше использовать абсолютные пути. Если вы хотите использовать изображения извне руткита, вам нужно предоставить их напрямую, как в вашем примере или как @KobbyPemson.
Причина, по которой вы не видите PDF при добавлении имени, заключается в том, что атрибут name не называет PDF. Это имя переменной, в которой хранится PDF. Таким образом, когда вы предоставляете его, вы говорите CF, чтобы заполнить PDF-файл переменной, используя имя, которое вы указали.