首页 > 解决方案 > 在 chrome 中下载的 PDF 大部分是空白的,但在邮递员中是可以的

问题描述

我正在尝试在我的浏览器中下载一个 PDF,我使用我正在运行的烧瓶服务器中的 axios 将文本插入(通过 pdf 表单字段)。

服务器端代码:

def create_form():
    # pdf buffer is a BytesIO object that contains the pdf
    ...
    pdf_buffer.seek(0)
    return send_file(pdf_buffer, as_attachment=True, attachment_filename='file.pdf', mimetype='application/pdf')

当我在邮递员中使用该save and download选项测试此端点时,它工作正常,并在提示我下载文件后保存了文件,所有文本都覆盖在原始 pdf 之上。

但是,当我在 chrome 中使用 axios 时,pdf 会自动下载,但 pdf 是空白的,除了我在表单字段中覆盖的新文本。原始的pdf内容完全消失了。这是在chrome中使用axios保存PDF的代码。Firefox 也存在同样的问题。

apiRequest({
  apiEndpoint,
  data,
  responseType: 'blob',
}).then((resp) => {
    let blob = new Blob([resp.data], { type: 'application/pdf' })
    const url = window.URL.createObjectURL(blob);
    let a = document.createElement("a");
    a.href = url;
    a.download = 'file.pdf';
    document.body.appendChild(a);
    a.click();    
})

为什么这在邮递员中有效,但在 chrome 或 firefox 中无效?我唯一能想到的是邮递员的save and download功能对待它收到的 PDF 与 axios POST 响应不同。

标签: pdfflaskaxiospostman

解决方案


推荐阅读