• ベストアンサー

pdfへのリンククリックで、ダウンロード画面を表示させたい

<a href="./hogehoge.pdf">ダウンロード</a> このようなリンクをクリックすると、ブラウザの中にpdfが表示されてしまいます。 強制的にダウンロード画面を出させるには、どのようにすればよいでしょうか? HTTPヘッダーが操作できる環境なら、"Content-Disposition: attachment"を吐き出せばよいのでしょうが、HTMLだけでは無理ですか? JavaScriptを使えばできそうな気もするのですが、情報が検索できませんでした。 宜しくお願いします。

  • ps5550
  • お礼率65% (129/196)
  • HTML
  • 回答数3
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • EUR
  • ベストアンサー率61% (29/47)
回答No.3

方法として3点あります。 1.質問文にもあるようにHTTPヘッダーで強制的にダウンロードダイアログを出力させる方法 2.No1さんがおっしゃるようにサーバーでMIMEタイプをいじる方法 3.クライアント側のフォルダオプションでPDFの拡張子に対して、必ずダイアログを表示させる方法 1は一番有効な手ですが、使えないのですか・・・ 2はブラウザによって無視されたりします・・・ 3も確実な手ではあるのですが、クライアント1台1台設定を行ってもらわなければなりません。 JavaScriptで出来るということは聞いたことがありません。すみません。

ps5550
質問者

お礼

回答ありがとうございます。 「HTMLだけで」ということ意味では、どうも無理みたいですね。 ありがとうございました。

その他の回答 (2)

回答No.2

クリックした時の挙動はブラウザによるので、たとえば全てのOS、ブラウザでダウンロードをさせたいとなるとCGIで処理するしかないと思います。 CGIと言ってもPerlなら4,5行程度でできます。

ps5550
質問者

お礼

すみません。CGIを併用すればよいのですが、できればHTMLだけで、もっと手軽にできる方法があるのかなと思い、質問しました。 例えば、今後、CGIが使えないレンタルサーバーなどでも使えるようにと。 質問が情報不足ですみません。

回答No.1

IEなどはファイルの拡張子で立ち上げるアプリケーションを決める場合もあるので、こうなるとサーバー側ではどうにもならないですね。 試した事はありませんが、サーバー側の設定がいじれるのであれば、MIMEヘッダの定義からapplication/pdfを外してみたらどうなりますかね。

ps5550
質問者

お礼

回答ありがとうございます。 サーバーは別会社が管理していますので、ちょっとお願いしずらくて・・・

関連するQ&A

  • phpでcsvダウンロードできない

    phpで配列をCSV にしてボタンを押すとブラウザからダウンロードさせたいのですが、 htmlタグで表示した後に、ボタンを押すとブラウザからダウンロードさせるには、以下の ヘッダーをhtmlタグより下につけると、機能しなくなってダウンロードできなくなって しまっています。 どうしたらいいのでしょうか。 header('Content-Type:application/octet-stream'); header('Content-Disposition:attachment;filename=data.csv');

    • ベストアンサー
    • PHP
  • 画像をダウンロードさせたい。

    いろいろなファイルがサーバーにあがっているとして、 その一覧が<a href="">ファイル名</a>で表示されているとします。 ファイル名を押下した時にダウンロードさせたいと思っています。 -------------------------------------------------- header("Content-Disposition: inline; filename=".$fileDlName); header("Content-Length: ".$fileDlSize); header("Content-Type: application/octet-stream"); readfile($filePath) ------------------------------------------------- ↑でCSV,PDF,ZIPファイルなどはダウンロードできるようになりました。 が、JPEG,GIF,PNGなどはブラウザに表示されてしまい ダウンロードできません。 画像も強制でダウンロードさせたいのですがよい方法はありますか?? ブラウザ:IE7 PHP:5.2.3 Apache:2.0.59 以上、よろしくお願いいたしますm(_ _)m

    • ベストアンサー
    • PHP
  • CGI経由PDFダウンロードでエラー

    CGIの知識が全くなく、いろいろなサイトを参考にさせていただいています。 表現等が正しくないことがあるかもしれませんが、ご了承下さい。 htmlのsubmitからcgiを経由してpdfをダウンロードさせるように作成中です。 cgiは、下記Uページを参考にさせていただきました。 http://www.abe-tatsuya.com/web_prog/perl_cgi/content_disposition.php #実際の記述<----------------------------------------------- #-- ダウンロードさせる元ファイル $source = 'doc.pdf'; #-- 保存時のファイル名(デフォルト) $filename = '申込書.pdf'; #-- HTTPヘッダ送信 print qq|Content-type: application/pdf\n|; print qq|Content-Disposition: attachment; filename="$filename"\n|; print qq|\n|; #-- ファイルを読み込んで出力 open(FILE,"$source"); while(<FILE>){print;} close(FILE); #---------------------------------------------------------> 上記の結果、ダウンロードはできるのですが、 Acrobatのエラーで、「この文章を開くときにエラーが発生しました。ファイルが壊れています。修復できませんでした。」 というメッセージが表示されます。 PCを変えてみたりもしましたが、どのPCからダウンロードしても同じです。 ちなみに、ウェブサーバーへアップロードする前のpdfは、ちゃんと開きます。 何が原因なのでしょうか?

    • 締切済み
    • CGI
  • HTMLリンクからPDFのしおりへリンク指定する方法

    HTML<a href=\"~リンク\">からPDFのしおりへのリンク指定方法についてご存知の方がいらしたら教えていただけませんか? PDF内の任意のページ(n)へのアンカー指定方法は「***.pdf#page=n」というところまでは分かりましたが、できればPDFの「しおり」を利用した、あるページの中のあるテキストへHTMLのアンカーリンクの様に飛ぶことができればと考えています。 条件としては、ユーザーがクリックするリンクはHTMLのa hrefです。 宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • HPでPDFファイルをクリックしたとき、AdobeReaderで開かずにダウンロードさせるには?

    Webページにおいて、PDFファイルをクリックしたら、通常はAdobeReaderでPDFファイルが開いてしまいますが、PDFファイルを開くのは重くてブラウザが固まるケースが非常に多いのでいやがる方が多く、回避したく思います。 要はカタログなどなので、開かずにダウンロードしてもらう形にしたいです。 検索していると、.htaccessを使ってダウンロード型に自動的に変更する方法があたので導入しましたが、IE7でできませんでした。 書いてあった内容 ------------------------------------------------------------ <a href="○○.pdf">PDFファイルをダウンロード</a> とタグで書けばダウンロードできます。 が、そのままだと、通常はブラウザで表示されてしまうと思います。 ダウンロードになるようにするためには 「.htaccess」ファイルなどを使って、PDFのMIMEタイプを変更をする必要があります。 手順: 「.htaccess」を作り、 ------ AddType application/octet-stream pdf ------ と記述、FTPでサーバーにアップロード。 これで、リンクをクリックすると、そのまま開かずに、ダウンロードが開始されます。 ------------------------------------------------------------ IEではダメでしたが、一応Firefoxでやってみるとダウンロード型にできました。 でも、当然ながらIEでダメなどブラウザを選ぶのではどうしようもありません。 ブラウザがどうあろうがうまくいく方法で、なるべく簡便に済ませられる方法がないでしょうか? なお、補足しますと、aタグのリンクでPDFファイルを指定しますが、そのままの記述だけだとダウンロードになってくれず、PDFファイルがブラウザで開いてしまいます。 このままの状態でダウンロードにするにはユーザ側で右クリックをしてもらわなければなりません。そうではなく左クリックしただけで勝手にダウンロードになるようにしたいです。 要は、.ZIPファイルみたいにクリックしただけでダウンロードになってくれるのが良いです。

    • ベストアンサー
    • HTML
  • HTML何ヵ所かからPDFにリンクさせるには?

    HTML何ヵ所かからPDFにリンクさせるには? HTMLファイルからPDFにリンクさせるには、Adobe Acrobat 7.0 の場合、 PDF Open Parameters(http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf ) で紹介があり、 例えば <A href="***.pdf#page=2&view=FitH,top">第1のリンク先へ</A> でAdobe Acrobat 7.0 で作成したPDFファイル(***.pdf)のページ2のトップにリンクできることは確認しました。 ところが同じHTMLファイル何ヵ所かから、同じPDFファイル(***.pdf)の異なるページにリンクさせることができません。 例えば、 <A href="***.pdf#page=5&view=FitH,top">第2のリンク先へ</A> <A href="***.pdf#page=8&view=FitH,top">第3のリンク先へ</A> として、他の2ヵ所から、其々ページ5とページ8 へジャンプさせようとしましたが、全てページ2にジャンプしてしまいます。 HTMLファイル複数箇所から同一のPDF何ヵ所かへリンクさせるにことはできるのでしょうか? また、その方法を教えてください。 更に、Adobe Acrobat 7.0 の他で作成したPDFファイルへリンクさせる場合も同様にできるのでしょうか? よろしくお願いします。

  • PDFファイルへのリンクについて

    ホームページ制作時のPDFファイルへのリンクについて質問です。 通常PDFへのリンクは、<a href="http://www.hogehoge.com/○○○○.pdf">○○○</a>といった感じで記述すると思いますが、その際に対象となるPDFファイルが複数ページあって、その中の指定したページに直接リンクしたい(すぐに指定ページが開いて欲しい)ということは可能なのでしょうか? 出来るとした場合、記述方法をご存知の方がいらっしゃったら是非ご教授願います。

    • ベストアンサー
    • HTML
  • PHPで複数ファイルのダウンロード

    はじめまして、PHPについて質問させていただきます。 PHPでファイルを複数ダウンロードできるようしたいと思っています。 色々調べ、header関数を使用し、以下のように記述すると ファイルのダウンロードは成功しました。 /*****************************************/ // ダウンロードさせる元ファイル(絶対パス) $filepath = 'test_01.pdf'; // 保存時のファイル名(デフォルト) $filename = 'download001.pdf'; // HTTPヘッダ送信 header("Content-length: " . filesize($filepath)); header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename=\"{$filename}\""); // ファイルを読み込んで出力 readfile($filepath); /*****************************************/ 一つのファイルのダウンロードに成功したので、 次に複数のファイルを順番にダウンロードをさせる為にループ処理をしました。 /*****************************************/ //配列 複数ファイル $downfile = array("test_01","test_02","test_03"); //データ数 $max = count($downfile); // ダウンロードさせるディレクトリ(絶対パス) $filepath = "/home/sites/www.eshop-himawari.com/web/test_nihon/form_down/file/"; // 保存時のファイル名(デフォルト) $filename = "download"; $filetype = ".pdf"; $kazu = 1; //ループ処理 for( $i = 0; $i < count( $max ); $i++ ){ $downpath = $filepath.$downfile[$i].$filetype; $filename = $filename.$kazu.$filetype; $kazu = $kazu++; // HTTPヘッダ送信 header("Content-length: " . filesize($downpath)); header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename=\"{$filename}\""); // ファイルを読み込んで出力 readfile($downpath); // $fp = fopen( "$downpath", "rb" ); // @fpassthru( $fp ); } /*****************************************/ しかし実行すると最初のファイルはダウンロードしますが 2つ目からのファイルはダウンロードされませんでした。 きちんとループ処理をされて、2つ目以降のファイルをダウンロード するには、どうすればいいのでしょうか?

    • 締切済み
    • PHP
  • マウスクリックでファイルをダウンロード

    Webページ上で次のようなことは可能なのでしょうか? 1)ブラウザ上に表示されているWebページ上でマウスクリック(リンク、ボタン等) 2)必ずダウンロードのダイアログが開きダウンロードを行う 具体的に説明しますと、 WebページでPDFファイルへのリンクが張られているとします。 ブラウザでこの部分をクリックすると、PDFプラグインがインストールされていると ブラウザ内でこのPDFファイルが表示されてしまいます。 しかし、この表示をさせずに該当PDFファイルをダウンロードさせたいわけです。 リンクを右クリックして"ダウンロード"を選択すれば可能ですが、プラグインの 有無に関わらず左クリックで必ずダウンロード処理をさせたいということです。 これを実現させる方法がありましたらお教えください。 なお、WebページはCGI(Perl)を使用して表示していますので、HTML,JavaScript, Perlなら使用可能です。 以上、よろしくお願いします。

    • ベストアンサー
    • HTML
  • CSVファイルのダウンロードについて

    現在開発しているシステムでCSVファイルをダウンロードしたいのですがうまくいきません。どなたか問題の解決できる方お願いします。 現在、CGIでCSVファイルを作成しておきそれをファイルのリンクからダウンロードさせようとしています。 そこで問題になっているのがIEのバージョンが6以前なら普通にダウンロードが出来るのですが、バージョン6だとEXSELがブラウザ内で立ち上がります。 これの回避方法(まずダウンロードをしたいです。)はありませんか? 現在ファイルのヘッダーはこのようにしています。 print "Content-type: application/octet-stream\n" ."Content-Disposition: attachment; filename=aaa.csv\n\n" あと、このCGIプログラムをネスケ、mozillaで開くとソースがブラウザに表示されてしまいます。IEでは問題なく表示されるのにネスケとmozillaはどうしてこんなことが起きるのでしょうか? 少しわかりずらい文章になってしまって申し訳ありません。 どなたかお力を貸してください。お願いします。

    • 締切済み
    • CGI

専門家に質問してみよう