ユーザーが保存することを選択したときに、カスタムファイル名でプロンプトを表示するインライン PDF を動的に作成しようとしています。documentationによると、saveasname
属性は私が望むことを行う必要があります。
(format="PDF" のみ) ユーザーがブラウザーに書き込まれた PDF ファイルを保存するときに [名前を付けて保存] ダイアログに表示されるファイル名。
ただし、IE 9 と Firefox 13.0.1 の両方で発生しているのは、SaveAs ダイアログに表示されるファイル名が私の CF テンプレートと同じですが、拡張子が PDF になっていることです。(つまり、私のコードは入っmakepdf.cfm
ていて、SaveAs は を保存するように促しますmakepdf.pdf
。) ただし、Chrome では完全に機能します。(すべて Windows 7 で。)
PDFを作成するための私のコードは次のとおりです。
<cfdocument format="pdf" bookmark="true" saveasname="MyReport.pdf">
コンテンツの性質とコンテンツ タイプを明示的に宣言すると、次のようになります。
<cfheader name="Content-Disposition" value="inline; filename=MyReport.pdf">
<cfcontent type="application/x-pdf">
<cfdocument format="pdf" bookmark="true" saveasname="MyReport.pdf">
- Chrome で「Content-Disposition」が 2 回宣言されていると表示される
- Firefox で PDF ファイルが破損していると表示される
- IEはそれを無視します(それでも正しいファイル名は表示されません)
ヘッダーだけに頼るなら
<cfheader name="Content-Disposition" value="inline; filename=MyReport.pdf">
<cfcontent type="application/x-pdf">
<cfdocument format="pdf" bookmark="true">
コードの最初のスニペットと同じ動作が得られます。
インラインで表示するのではなく、ブラウザにダウンロードを促す方法を知っています。すべてが期待どおりに機能しますが、それは望ましい動作ではありません。
ファイル名に時刻と日付を使用する必要がありますが、エンド ユーザーはファイルを上書きしないようにするのに十分な知識がありません (ファイルを保存することを選択した場合)。
IE と Firefox に本来の動作をさせるために欠けているものはありますか? これを行う他のブラウザは何ですか?モバイルサファリ?