Adobe Reader プラグインがインストールされていないためか、ダウンロードされます。この場合、IE (どのバージョンでも問題ありません) はそれをレンダリングする方法を認識せず、単にファイルをダウンロードします (たとえば、Chrome には独自の埋め込み PDF レンダラーがあります)。
PDFサポートを検出したい場合は、次のことができます。
!!navigator.mimeTypes["application/pdf"]?.enabledPlugin
(現在は推奨されておらず、一部のブラウザーでのみサポートされている可能性があります)。
navigator.pdfViewerEnabled
(現在の標準です。変更される可能性があり、現在は広くサポートされていません)。
2021 : 今日、元の回答は間違いなく時代遅れです。比較的古いブラウザーをサポートする必要がない限り、<object>
(最終的にはフォールバックを使用して) 単純に使用し、そのままにしておく必要があります。
それは言った。<iframe>
PDF を表示する最良の方法ではありません (Safari などのモバイル ブラウザーとの互換性を忘れないでください)。一部のブラウザーは、そのファイルを常に外部アプリケーション内 (または別のブラウザー ウィンドウ) で開きます。私が見つけた最良かつ最も互換性のある方法は少しトリッキーですが、私が試したすべてのブラウザーで動作します (かなり古いものでも):
< を保持しますiframe>
が、その中に PDF を表示しないでください<object>
。タグで構成される HTML ページで埋められます。PDF の HTML ラッピング ページを作成します。次のようになります。
<html>
<body>
<object data="your_url_to_pdf" type="application/pdf">
<div>No online PDF viewer installed</div>
</object>
</body>
</html>
もちろん、ブラウザに適切なプラグインをインストールする必要があります。また、モバイル デバイスで Safari をサポートする必要がある場合は、この投稿を参照してください。
なぜ HTML ページなのか? そのため、PDF ビューアーがサポートされていない場合にフォールバックを提供できます。内部ビューア、プレーンな HTML エラー メッセージ/オプションなど...
顧客に代替ビューアを提供できるように PDF サポートを確認するのは難しいことです。PDF.JSプロジェクトを見てください。かなり良いですが、デスクトップ ブラウザのレンダリング品質は、ネイティブのPDF レンダラーほど良くありません (モバイル ブラウザでは、画面サイズのせいで違いは見られなかったと思います)。