JavaScript を使用して Web サービスから返されたバイナリ文字列から PDF ファイルをダウンロードするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-29 05:40:02
オリジナル
578 人が閲覧しました

How to Download a PDF File from a Binary String Returned by a Web Service Using JavaScript?

JavaScript を使用して Web サービスから返されたバイナリ文字列から PDF ファイルを構築する方法

PDF ファイルをレンダリングしようとすると、次のような問題が発生します。 Ajax リクエスト経由で受信したバイナリ文字列。 Web ブラウザ、つまり Firefox と Internet Explorer 9 では、data:uri ソリューションを使用するときに問題が発生します。

問題

受け取ったバイナリ文字列は次のようになります。

%PDF-1.4....
.....
....hole data representing the file
....
%% EOF
ログイン後にコピー

試みられた解決策

data:uri を介したデータの埋め込みは、Opera と Chrome では効果的ですが、Firefox と Internet Explorer では失敗します。

考えられる解決策

ユーザーがダウンロードできるように、ファイル システム上に PDF ファイルを構築することを検討してください。この方法には、クライアント側のソリューションと主要なブラウザとの互換性が必要です。

改訂されたソリューション

XMLHttpRequest の responseType を「blob」に変更します。次に、 要素で window.open 関数を download 属性に置き換えます。このプロセスでは、XMLHttpRequest 応答の「.pdf」ファイルとしてのダウンロードが開始されます。

<code class="javascript">var request = new XMLHttpRequest();
request.open("GET", "/path/to/pdf", true); 
request.responseType = "blob";
request.onload = function (e) {
    if (this.status === 200) {
        // `blob` response
        console.log(this.response);
        // create `objectURL` of `this.response` : `.pdf` as `Blob`
        var file = window.URL.createObjectURL(this.response);
        var a = document.createElement("a");
        a.href = file;
        a.download = this.response.name || "detailPDF";
        document.body.appendChild(a);
        a.click();
        // remove `a` following `Save As` dialog, 
        // `window` regains `focus`
        window.onfocus = function () {                     
          document.body.removeChild(a)
        }
    };
};
request.send();</code>
ログイン後にコピー

以上がJavaScript を使用して Web サービスから返されたバイナリ文字列から PDF ファイルをダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート