我有这样的代码:
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`);
});
为什么expressjs渲染空PDF文件而不是
https://pdfobject.com/pdf/sample.pdf
?
您只需修改此代码,将
responseType
设置为 arraybuffer:这告诉 axios 将响应作为原始二进制数据处理,而不是尝试将其解析为 JSON。
axios 默认为 JSON 格式
const { data } = await axios.get('https://pdfobject.com/pdf/sample.pdf', {
responseType: 'arraybuffer',
});
这是分叉版本工作