データを汎用スクリプト (フォームが読み込まれるのと同じページ、index.php) に送信するフォーム ボタンがあり、適切な POST 変数がそのスクリプトに送信されると、ユーザーが印刷する PDF が返されます (読み込まれた関連するフォーム情報、およびその他の DB 情報など)。
問題は、ヘッダーで content-type と content-disposition を何に設定しても、Firefox がユーザーにドキュメントを保存するか開くように求めることです。
Firefox が独自の Adobe Reader プラグインを「Open With」オプションとして提供していれば、これはそれほど悪くはありませんが、実際の Adobe Reader アプリしか提供していません (認証やデフォルトのブラウザー設定が制御できないなどの問題が発生します)。 )。
サーバー側で (.htaccess ファイルまたは実際のヘッダーのいずれかで) 変更する必要があるものはありますか?Firefox に、応答が application/pdf MIME タイプの PDF であり、ファイルをサーバー生成のストリームではなく、PDF へのハード リンクでしたか?
最後に一つだけ...
Content-Disposition を「インライン」に設定すると、Firefox は Firefox でファイルを開きますが、最初にページを「index.php」としてロードする前のみです。ユーザーが PDF に到達したら、[戻る] ボタンをクリックしようとすると、データを送信したものではなく、PDF をロードした index.php にヒットします。Mac 側では、Firefox は PDF をロードせず、代わりに「index.php」を添付ファイルのように保存または開くようにユーザーに促します。
ありがとう!
現在、私が試したコード(この順序で):
これは添付ファイルとして扱われるため、Firefox の Mime-Type ルールはファイル拡張子ルールでは無視されます。
header("Content-Type: application/pdf");
header('Content-Disposition:attachment; filename="testing.pdf"');
これは機能しますがindex.php
、最初にロードしてからファイルをロードします。これは見栄えが悪く、混乱を招き、pdf と元のページの間に余分な要求 (したがって余分なページ) を配置します。
header("Content-Type: application/pdf");
header('Content-Disposition:inline; filename="testing.pdf"');
これは (Firefox の場合) と同じように扱われるattachment
ため、デフォルトで Adobe Reader プラグインを使用するのではなく、Adobe Reader で保存または開くように求めるプロンプトのみが表示されます。
header("Content-Type: application/pdf");
header('Content-Disposition:pdf; filename="testing.pdf"');
また、最後の例では、コンテンツの配置としてと の両方を試したことにも注意してpdf
ください。application\pdf
変わりはない。
まだ試していない唯一のことは、タイプを ocet/stream に設定することです。指を交差させますが、息を止めません。