2013-09-11 2 views
0

Кажется, что, когда я использую тег <cfsavecontent>, вывод этого файла обслуживается сервером (без выведенной переменной), что для меня является чем-то вроде поражения цели от <cfsavecontent>.Cfdocument, обслуживаемый сервером, несмотря на то, что он находится в cfsavecontent

Если это важно: мое приложение использует ColdSpring, ModelGlue и Transfer ORM.

Вот мой пример кода в функции:

<cfsavecontent variable="testvar"> 
<cfinclude template="test.cfm" /> 
</cfsavecontent> 
<cfreturn testvar> 

И шаблон:

<cfdocument format="PDF" pagetype="A4" orientation="portrait" unit="cm"> 
<cfoutput> 
<!--- PDF content here ---> 
</cfoutput> 
</cfdocument> 

Содержание PDF в настоящее время анализируется моим браузером (Google Chrome), в то время как точка зрения не имеет даже загружен. Как я могу лучше всего это предотвратить?

Просто уточнить: я не выводя переменную #testvar# в этот код, хотя, похоже, он загружает шаблон в браузере.

+0

Что вы пытаетесь сделать с тегом cfreturn? –

+0

Цитируя мой вопрос: «Вот мой примерный код в функции ** **:« –

+0

К сожалению, я пропустил эту часть. –

ответ

2

Поскольку мне также нужно было слить несколько документов PDF, я в итоге сделал следующее. Огромное спасибо Адаму Камерону за то, что он предоставил решение моей первоначальной проблемы.

  • В файле шаблона, я использую <cfdocument> тег с атрибутом name, чтобы сохранить PDF в переменной (спасибо Адаму Камерона за это)
  • Затем я храню все PDF-документы в массив их двоичный формат
  • На мой взгляд, я объединяю документы PDF вместе с помощью <cfpdf>'s merge действия и используя cfloop для циклического перемещения по массиву внутри него.
  • Наконец, я отображение контента с помощью <cfcontent> и с помощью атрибута переменного с toBinary(myPdf)

Это заставило меня туда, где я нахожусь.

8

Чтобы достичь того, что вы пытаетесь сделать, не следует ли просто использовать атрибут name<cfdocument>, чтобы поместить данные PDF в переменную, вместо того чтобы пытаться выполнить <cfsavecontent>?

Раскрытие информации: Я никогда не использовал <cfdocument> для чего-либо иного, кроме кода и тестирования с доказательством концепции, но это то, что я выношу из документов.

+4

I * есть * используется '' довольно немного, и Адам прав. '' предназначен для хранения текста. Если вы хотите создать двоичный файл PDF, но сохраните его для последующей обработки, а не выведите прямо в браузер, просто используйте атрибут 'name' так же, как вы используете атрибут' variable' ''. – CfSimplicity

+0

Извините за поздний ответ, но как я могу его вывести? Я попробовал следующее: ' # pdfData #' но это дает «коррумпированный» pdf (Adobe Reader не может его открыть). Я проверил, что переменная действительно содержит двоичные данные. –

+0

На самом деле, я знаю, что мне нужно положить его в тег ''. Теперь, как бы я поставил несколько переменных с PDF-содержимым в один PDF-файл? (У меня есть массив со всем содержимым в формате PDF.Я попытался сделать cfloop и сделать cfcontent для каждого из них, но это, конечно, не работает, поскольку cfcontent блокирует любой другой вывод (так включая другие cfcontent's)) –

1

cfinclude будет обрабатывать страницу test.cfm, а способ настройки cfdocument приведет к «открытию» pdf-документа в вашем браузере. Вы можете предотвратить открывающийся этот файл при сохранении файла на диске:

<cfdocument format="PDF" pagetype="A4" orientation="portrait" unit="cm" filename ="test.pdf" overwrite ="yes"> 

Но это не помешает исполнению cfinclude в cfcontent тег, он будет просто предотвратить открытие в браузере.

Вы можете наблюдать cfinclude как запрос к серверу, он всегда будет выполнен.

Решение должно заключаться в вызове запроса на файл test.cfm, который содержит cfdocument в тот момент, когда вы действительно хотите создать PDF.

Пример: с помощью javascript на клиенте вызывать службу отчетов, которая будет генерировать и выходить из экрана с помощью отчета в формате pdf.

Надеюсь, что это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^