2013/02/25, 01:30 - IT
以下の要件を満たす機能が構築可能かどうかの調査メモ。
------------------------------------------ (1) サーバ側でPDFを生成して、そのままウィンドウに表示。(ダイアログを出さずに) (2) 表示されたPDFを保存する時のファイル名をデフォルト値を指定した物にする。 ------------------------------------------ ◆Wikiまとめ記事 サーバ側で作成したPDFの表示とクライアントPCへの保存時のファイル名の指定 (1) は Content-Typeの設定と、Content-Disposition: inline にするだけでOKなので、全く問題ないのですが、問題は(2)。 IEだと Content-Disposition: inline の時に filenameが効かない。 つまりPDF生成処理のURLが create_pdf_normal.php だとすると、以下のようにHTTPヘッダを指定しても、保存時のファイル名は create_pdf_normal になってしまう。 ------------------------------------------ Content-Disposition: inline; filename=hoge.pdf ------------------------------------------ そもそも、レスポンスヘッダに指定したfilenameが使用できるのは、(attachmentの時に)ダウンロードダイアログを表示するタイミングだけで、いったんブラウザに表示した後は、レスポンスヘッダの内容なんて、もう捨てられてんじゃないの?と思ってたのですが、RFC を見る限り、どうも 違うようです。 ◆RFC 2183 和訳 http://www.studyinghttp.net/cgi-bin/rfc.cgi?2183 ------------------------------------------ 2.3 ファイル名パラメータ エンティティが別のファイルへと切り離され、保存される場合、送信者は使われるファイル名を提示したいと思うかもしれない。 受信する MUA はファイルへエンティティを書き込む場合には、提示されたファイル名が実際のファイル名の元となるものとして、可能な限り使うべきである。 ・ ・ そのパラメータは、いかなる MIME エンティティにも、`inline' のものであったとしても、使われるかもしれない。 ------------------------------------------ 「かもしれない」という所が微妙ですが、inlineの時でもfilenameの指定はアリ。という事らしい。 で、ブラウザ別の対応状況を調べてみたのですが、問題なのは IEだけでした。 ※サーバ側で作成したPDFの表示とクライアントPCへの保存時のファイル名の指定 IE9 になって、CSS3がそこそこ使えるようになった IE ですが、基幹系のWebシステムはターゲットブラウザ=IE の場合がほとんどなので、IEにはまだまだ悩まされそうです。 | このエントリーのURL
|