You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Loopback远程方法中将生成的PDF文件作为响应返回

你遇到的问题核心是doc.save('visitors.pdf')是jsPDF在浏览器环境下触发本地下载的API,不会返回PDF的二进制内容,无法直接用于服务端响应返回,按如下步骤修改即可:


修改PDF生成逻辑

删掉生成方法里的doc.save代码,改为输出二进制Buffer返回:

Visitor._getVisitorsPDF = async function (visitors) {
    // 原有业务逻辑保持不变
    const rows = tempData;
    const doc = new jsPDF();
    doc.autoTable(columns, rows);
    // 输出二进制内容返回给上层调用
    const pdfArrayBuffer = doc.output('arraybuffer');
    return Buffer.from(pdfArrayBuffer);
} 

远程方法逻辑无需大改

你现有代码中已经正确配置了Content-Type和Content-Disposition响应头,_getVisitorsPDF返回Buffer后直接调用res.send(result)即可正常返回PDF文件,前端请求该接口时会自动触发下载。


注意事项

  • 确保你安装的jsPDF版本支持Node.js环境,若使用旧版本可安装jspdf-node适配包
  • 发送响应后不要重复调用res.end()或next(),避免响应冲突
  • 若返回的PDF文件损坏,可检查是否有中间件对响应内容做了额外转码处理

内容的提问来源于stack exchange,提问作者Ali Yar Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:54:07