Ajax を使用してアクション クラスによって生成された PDF ファイルをダウンロードして開くにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-30 20:20:30
オリジナル
615 人が閲覧しました

How Can I Download and Open PDF Files Generated by an Action Class Using Ajax?

Ajax を使用して PDF ファイルを取得して開く

アクション クラスによって生成された PDF ファイルを Ajax 経由でダウンロードして表示するには、次のアプローチを使用できます。利用可能:

アクション クラスで、コンテンツ タイプが「application/pdf」として正しく設定されていること、および目的のファイル名が「contentDisposition」属性で指定されていることを確認します:

<code class="java">public String execute() {
    ...
    ...
    File report = signedPdfExporter.generateReport(xyzData, props);

    inputStream = new FileInputStream(report);
    contentDisposition = "attachment=\"" + report.getName() + "\"";
    contentType = "application/pdf";
    return SUCCESS;
}</code>
ログイン後にコピー

Ajax 呼び出しで、ストリーム応答を効果的に処理するようにリクエストを構成します。

<code class="javascript">$.ajax({
    type: "POST",
    url: url,
    data: wireIdList,
    cache: false,
    success: function(data) {
        // Convert the response data to a Blob object
        var blob = new Blob([data]);
        // Create a link element to trigger the download
        var link = document.createElement('a');
        link.href = window.URL.createObjectURL(blob);
        // Set the desired file name for download
        link.download = "filename_with_extension.pdf";
        // Simulate a click event to initiate the download
        link.click();
        // Remove the Blob URL once the download completes
        window.URL.revokeObjectURL(blob);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert('Error occurred while opening fax template' + getAjaxErrorString(textStatus, errorThrown));
    }
});</code>
ログイン後にコピー

このアプローチを組み込むことにより、アクション クラスによって生成された PDF ファイルを Ajax を使用してダウンロードし、正常に開くことができます。

以上がAjax を使用してアクション クラスによって生成された PDF ファイルをダウンロードして開くにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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