Как вывести PDF-переменную? - PullRequest
2 голосов
/ 09 ноября 2011

У меня есть тег cfdocument, который выглядит примерно так:

<cfdocument name="myPDF" format="PDF" ... >
   ...
</cfdocument>

Я сохраняю PDF-файл в переменной, используя атрибут name, так как я собираюсь использовать его в нескольких местах для многократного использования.,(Прикрепить к электронному письму, отобразить на экране и т. Д.)

Я хочу отобразить этот PDF-файл в браузере, просто вывести его так, как если бы я пропустил атрибут имени в cfdocument, но я могуне могу понять, как это сделать.Использование cfoutput (<cfoutput>#myPDF#</cfoutput>) выдает мне ошибку - «Объекты ByteArray не могут быть преобразованы в строки».Использование cfdump дает мне двоичный объект.Кажется, PDF хранится в двоичном формате ... Как я могу заставить его отображаться на экране в виде PDF?

Ответы [ 2 ]

8 голосов
/ 09 ноября 2011

Нашел решение (посмотрев в другом месте на нашем сайте, где это было сделано) - использовал cfcontent:

<cfcontent type="application/pdf">
<cfoutput>#tostring(myPDF)#</cfoutput>

Обновление :

Я действительно обнаружилнемного более простой способ сделать это:

<cfcontent type="application/pdf" variable="#myPDF#">
0 голосов
/ 18 ноября 2011

Как бы ни была хороша поддержка PDF в ColdFusion, мы не смогли уменьшить размер созданного файла до чего-то разумного, поэтому мы реализовали wkhtmltopdf.

http://wkhtmltopdf.org/

например. 1 МБ CF PDFs против 20 КБ wkhtmltopdf PDF. (wtf ??) Если у вас есть такой сайт, как наш, с тысячами pdf-файлов (счетов), 1 Мб просто неприемлемо.

wkhtmltopdf - это круто. Он конвертирует HTML-страницы в PDF-файлы с помощью WebKit. Да, вы можете встраивать шрифты, прозрачные изображения, CSS и JavaScript в ваш HTML! Внедрение веб-шрифтов Google также не влияет на размер файла, например, + 2-4 КБ, и они выглядят сексуально.

Вы просто создаете HTML-страницу и используете этот внешний двоичный файл для преобразования HTML в PDF. В вашем скрипте cf <cfexecute> оно, затем fileRead() содержимое.

Можно подумать, что Acrobat, являющийся продуктом Adobe и ColdFusion, также продуктом Adobe, будет производить лучшие PDF-файлы ... но не

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...