如何从axios响应中在expressjs中渲染pdf

问题描述 投票:0回答:1

我有这样的代码:

const axios = require('axios');
const express = require('express');

const app = express();

app.get('/', async (request, response) => {
  const {
    params: { accountId },
  } = request;

  try {
    const { data } = await axios.get('https://pdfobject.com/pdf/sample.pdf');

    response.setHeader('content-type', 'application/pdf');
    response.setHeader('content-type', 'application/pdf');
    response.send(Buffer.from(data, 'binary'));
  } catch (error) {
    console.log(error.message);
  }
});

app.listen(3000, () => {
  console.log(`Server app listening on port 3000`);
});

enter image description here

为什么expressjs渲染空PDF文件而不是

https://pdfobject.com/pdf/sample.pdf

游乐场

javascript express axios
1个回答
0
投票

您只需修改此代码,将

responseType
设置为 arraybuffer:这告诉 axios 将响应作为原始二进制数据处理,而不是尝试将其解析为 JSON。

axios 默认为 JSON 格式

const { data } = await axios.get('https://pdfobject.com/pdf/sample.pdf', {
    responseType: 'arraybuffer',
});

这是分叉版本工作

© www.soinside.com 2019 - 2024. All rights reserved.