2011-12-25 51 views
0

cfmページをwindow.open(..)を介してポップアップとして呼び出すColdFusionページがあります。ターゲットページは、PDFファイルをロードするcfmです。空のページがポップアップでcfcontentで表示される(手動による更新がない限り)

<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が表示されるということです。

ターゲットページをポップアップとして呼び出す方法と手動による更新を必要とせずに読み込む方法がありますか?

ありがとうございました。

+0

私が取り組んでいる環境はSuse/JBoss/JDK 1.5です。 – user164701

答えて

1

問題は、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"/> 

問題が解決しない場合は、あまりにもこの1を追加してみてください:

<cfheader name="Content-Disposition" value="attachment; filename=myPDF.pdf"> 
+0

こんにちはJake、実際にはコードの前にあなたが提案したが、私はブラウザからマニュアルリフレッシュをしない限り、PDFはまだ出てこなかった。 JSコードでは、URLフィールドにEnter(return)を押したときにブラウザがページを自動更新するように強制しました。だから私はcfflushも追加しました。私のコードとしてのあなたのコードは、呼び出し元がwindow.openではなくdocument.urlを実行した場合にのみ機能します。後者の場合、私の場合は強制的に手動でリフレッシュする必要がありますが、私はまだその理由を知りません! – user164701

+0

更新された回答をご覧ください。 –

+0

Jakeはあなたのご意見をありがとうございます。しかし、私の場合はコードのどれも働かなかった。私は自分のシステムをJBoss/Suse Linuxにデプロイしている可能性もあります。しかし、私は実際にそれを今日解決しました。ちょうどウィンドウをやった。cfcontentタグを含む別のcfmページへの場所(そこにpdfをロードする) – user164701

0

を私が採用されたソリューションは、呼び出しのことでしたそのプロキシページがPDFファイルを生成します。だから、私は1を持つことができないのはなぜ

ポップアップで
  1. window.open('2') //開いているPDF

  2. document.location = '3' //プロキシ

  3. cfcontent type='application/pdf' file='...' //はPDF

を生成し、 3は今のところ謎ですが、私の場合は完全に動作します。