Пустая страница отображается с cfcontent во всплывающем окне (если не обновлять вручную) - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть страница ColdFusion, вызывающая страницу cfm как всплывающее окно через window.open (..).Целевая страница - это cfm, который загружает файл PDF.Код вызываемой страницы следующий:

<cfcontent type="application/pdf" file="/deploy/cfusion.ear/cfusion.war/myPDF.pdf"/>
<cfflush>

<script language="javascript">
 window.location.reload();
</script>

К сожалению, я получаю только пустую страницу, если не обновляю страницу вручную (открываю всплывающую строку URL и нажимаю Enter), чтобы ее содержимое отображалосьбраузер.

Что странно, так это то, что если я заменю код страницы вызывающего абонента из window.open () на document.url = PDF отображается без необходимости обновления страницы.

У васкакие-либо предложения здесь, как вызвать целевую страницу как всплывающее окно и загрузить ее без необходимости обновления вручную?

Спасибо.

Ответы [ 2 ]

1 голос
/ 26 декабря 2011

Проблема в том, что вы смешиваете JavaScript и PDF-контент. Это действительно должно быть так:

<cfcontent type="application/pdf" file="/deploy/cfusion.ear/cfusion.war/myPDF.pdf"/>

Это вернет все содержимое этого PDF в браузер.

Что вы пытались сделать с кодом JavaScript?

edit Похоже, это может быть связано с кэшированием. Чтобы предотвратить это, попробуйте добавить несколько заголовков управления кешем в ваш файл:

<cfheader name="expires" value="#getHttpTimeString(now())#"> 
<cfheader name="pragma" value="no-cache"> 
<cfheader name="cache-control" value="no-cache, no-store, must-revalidate"> 
<cfcontent type="application/pdf" file="/deploy/cfusion.ear/cfusion.war/myPDF.pdf"/>

Если это не сработает, попробуйте добавить и эту:

<cfheader name="Content-Disposition" value="attachment; filename=myPDF.pdf">
0 голосов
/ 27 декабря 2011

Решение, которое я принял, состояло в том, чтобы вызвать страницу прокси, а затем эта страница прокси генерирует файл PDF.Итак:

  1. window.open('2') // открыть во всплывающем окне PDF

  2. document.location = '3' // прокси

  3. cfcontent type='application/pdf' file='...' // генерировать PDF

Почему у меня не может быть только 1 и 3, пока загадка, но в моем случае это работает отлично.

...