1

データを汎用スクリプト (フォームが読み込まれるのと同じページ、index.php) に送信するフォーム ボタンがあり、適切な POST 変数がそのスクリプトに送信されると、ユーザーが印刷する PDF が返されます (読み込まれた関連するフォーム情報、およびその他の DB 情報など)。

問題は、ヘッダーで content-type と content-disposition を何に設定しても、Firefox がユーザーにドキュメントを保存するか開くように求めることです。

Firefox が独自の Adob​​e Reader プラグインを「Open With」オプションとして提供していれば、これはそれほど悪くはありませんが、実際の Adob​​e 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ため、デフォルトで Adob​​e Reader プラグインを使用するのではなく、Adobe Reader で保存または開くように求めるプロンプトのみが表示されます。

    header("Content-Type: application/pdf");
    header('Content-Disposition:pdf; filename="testing.pdf"');

また、最後の例では、コンテンツの配置としてと の両方を試したことにも注意してpdfください。application\pdf変わりはない。

まだ試していない唯一のことは、タイプを ocet/stream に設定することです。指を交差させますが、息を止めません。

4

3 に答える 3

1

リンクの末尾を「.pdf」にして、mod_rewrite などを使用して PHP スクリプトにマップすることができます。

于 2009-12-17T22:05:14.537 に答える
0

FirefoxがPOSTへの応答としてPDFを処理するのに苦労していると思います。PDFへのリンクを生成してリンクをクリックしてもらうと、リンクにblah.php?VARなどのGET変数が含まれる可能性があります。 = 123なので、PDFを動的に生成できます。

于 2009-12-17T21:47:33.510 に答える
-1

MIME タイプapplication/octet-streamは、ブラウザにダウンロードを強制する必要があります。それがあなたの投稿からあなたが望んでいるものかどうかはわかりません。

于 2009-12-17T21:54:26.423 に答える