80

タグを使用して pdf ファイルを埋め込みました。

<iframe id="iframepdf" src="files/example.pdf"></iframe>

これは、Chrome、IE8+、Firefox などでは正常に動作しますが、何らかの理由で、一部の人々が IE8 で表示すると、ファイルが埋め込みではなくダウンロードされます。このブラウザが時代遅れであることは承知していますが、私のオフィスの標準ブラウザであるため、ウェブサイトはこれに合わせて設計する必要があります。

なぜこれが起こっているのか、どうすれば修正できるのか、ファイルをダウンロードする代わりにエラーメッセージを表示できるのか、誰にもアイデアはありますか?

4

6 に答える 6

105

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 レンダラーほど良くありません (モバイル ブラウザでは、画面サイズのせいで違いは見られなかったと思います)。

于 2013-10-29T09:56:33.583 に答える
47

ブラウザに pdf プラグインがインストールされている場合はオブジェクトを実行し、インストールされていない場合は Google の PDF Viewer を使用してプレーン HTML として表示します。

<object data="your_url_to_pdf" type="application/pdf">
    <iframe src="https://docs.google.com/viewer?url=your_url_to_pdf&embedded=true"></iframe>
</object>
于 2017-03-20T16:22:42.803 に答える