1

フォームボタンがあり、クリックするとフォームが送信されます。

同時に、ブラウザが PDF ファイルのダウンロードを開始します。どうすればこれができるのだろうか?PDF は通常、デフォルトでブラウザによって開かれますが、ブラウザでファイルを「名前を付けて保存」し、ファイルを開かないでください。これはhtmlのみを使用して実行できますか、それともjavascriptが必要ですか?

4

4 に答える 4

2

このプラグインを使用すると、javascript を使用してファイルをダウンロードできます。
それ以外の場合は、javascript でコードを記述できます。

$('a').click(function(e) {
   e.preventDefault();  //stop the browser from following
   window.location.href = 'downloads/file.pdf';
});

<a href="no-script.html">Download now!</a>

または、これを使用できます。

PHP の場合:

<?php
  header('Content-type: application/pdf');
  header('Content-disposition: attachment; filename=filename.pdf');
  readfile("file.pdf");
?>

Javascript の場合:

<body>
<script>
 function downloadme(x){
    winObj = window.open(x,'','left=10000,screenX=10000');
    winObj.document.execCommand('SaveAs','null','download.pdf');
    winObj.close();
 }
 </script>

 <a href=javascript:downloadme('file.pdf');>Download this pdf</a>
 </body>
于 2012-06-05T18:14:34.013 に答える
2

サーバー側で PHP を使用している場合は、これを試してください。これは、私の Web サイトの 1 つで実行されているテスト済みのコードです。

<?php
    ob_start();
    $file = 'YOUR-FILENAME-HERE.pdf';

    if (file_exists($file)) 
    {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit();
    }
?>

ブラウザは、ブラウザに表示せずにダウンロードするように求めます。

于 2012-06-05T16:43:51.337 に答える
0

オプション 1: フォームの送信先の URL にダウンロードを返すようにすることができます。

オプション 2: ajax 呼び出しを使用してオンクリックでデータを送信し、window.location をダウンロード URL に設定します。

PDF をブラウザで開くかダウンロードするかは、制御できないクライアント側の設定です。

于 2012-06-05T16:35:18.483 に答える
0

その場合、PDF を強制的にダウンロードするように Web サーバーを構成する必要があります。Apache を使用している場合は、この記事を参照してください -> http://www.thingy-ma-jig.co.uk/comment/7264

または、すべてのブラウザーをサポートする必要がない場合は、html5 のダウンロード属性を使用するだけで済みます -> http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-ダウンロード

于 2012-06-05T16:33:42.380 に答える