динамический pdf-cfdocument + cfcontent + изображение + вложение электронной почты - PullRequest
1 голос
/ 27 января 2011

Как изображения могут быть загружены в динамически сгенерированный pdf (cfdocument)? В том, что PDF не хранится HDD. PDF должен быть отправлен по электронной почте, и баран очищен. Изображения хранятся вне папки wwwroot. Если это необходимо, PDF-файл может быть сохранен на жестком диске, присоединен, отправлен по электронной почте, затем удален, но выбрал бы его не сохранять на жестком диске.

c: \ coldFusion9 \ imgs \ is dir

Пример:

<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 ]

2 голосов
/ 27 января 2011

Пара замечаний, чтобы уточнить:

cfdocument использует HTTP-соединение для захвата изображений, поэтому вы не можете получить что-либо вне webroot.По моему опыту, относительные пути проблематичны, поэтому лучше использовать абсолютные пути.Если вы хотите использовать изображения извне руткита, вам нужно предоставить их напрямую, как в вашем примере или как @KobbyPemson.

Причина, по которой вы не видите PDF при добавленииname это то, что атрибут name не называет PDF.Это имя переменной, в которой хранится PDF.Поэтому, когда вы предоставляете его, вы говорите CF заполнить PDF-файл переменной, используя предоставленное вами имя.

2 голосов
/ 27 января 2011

Если я правильно понимаю ваш вопрос.Вы хотите: 1. Захватить изображение из папки за пределами вашего корневого каталога. 2. Поместить изображение в cfdocument. 3. Присоединить cfdocument к cfmail

.можно найти на сайте Бена Наделя 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>
...