使用 JavaScript 下载 PDF 文件

Download PDF file with JavaScript

我想下载通过 AJAX 加载的 PDF 文件。我试图通过使用库 FileSave.js 来做到这一点。以下代码有效,但当我打开 PDF 文件时,它完全是空的。我注意到 PDF 文件的编码是 UTF-8,但端点 returns 是一个采用 ANSI 编码的 PDF。

我需要做什么才能下载正确编码的文件?

var downloadReport = function() {
    $http.get("../api/report").then( function(response) {

        var blob = new Blob([response.data], {
            type: "application/pdf",
        });
        saveAs(blob, fileName);

    });
};

最后我自己找到了问题所在。我必须将 responseType: "arrayBuffer" 添加到 http 请求中:

$http({
    method: 'POST',
    url: '../api/report',
    responseType: "arraybuffer"
    }).then( function(response) {
        var blob = new Blob([response.data], {
            type: "application/pdf",
        });
    saveAs(blob, fileName);
    });
};