我有一个 Express 服务器,它可以创建 pdf 文件。
我正在尝试将此文件发送给客户端:
const fs = require('fs');
function download(req, res) {
var filePath = '/../../myPdf.pdf';
fs.readFile(__dirname + filePath, function(err, data) {
if (err) throw new Error(err);
console.log('yeyy, no errors :)');
if (!data) throw new Error('Expected data, but got', data);
console.log('got data', data);
res.contentType('application/pdf');
res.send(data);
});
}
在客户端我想下载它:
_handleDownloadAll = async () => {
console.log('handle download all');
const response = await request.get(
`http://localhost:3000/download?accessToken=${localStorage.getItem(
'accessToken'
)}`
);
console.log(response);
};
我收到了像
这样的body.text%PDF-1.4↵1 0 obj↵<<↵/Title (��)↵/Creator (��)↵/Producer (��Qt 5.5.1)↵
但我无法实现下载。
如何从数据创建 PDF 或直接从服务器下载?
我已经成功了: 答案很简单。我只是让浏览器使用 html anchor 标记来处理下载: 服务器:
function download(req, res) {
const { creditor } = req.query;
const filePath = `/../../${creditor}.pdf`;
res.download(__dirname + filePath);
}
客户:
<a href{`${BASE_URL}?accessToken=${accessToken}&creditor=${creditorId}`} download>Download</a>
最佳答案
结果是二进制的字符串。我们使用 Base 64 将二进制转换为 pdf
var buffer = Buffer.from(result['textBinary'], 'base64')
fs.writeFileSync('/path/to/my/file.pdf', buffer)
关于javascript - Node.js 二进制文件转 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47713857/