【发布时间】:2016-10-29 05:40:42
【问题描述】:
我们正在开发一款集成 Recurly 的应用,并尝试使用它的 PDF 发票功能。
该应用基于 Node.js(Meteor 平台)。
它从 Recurly 收到带有二进制文件的正确答案:
但我无法正确保存它。我尝试了两种方法:在浏览器的客户端打印:
var file = window.URL.createObjectURL(new Blob([r.content], {type: "application/pdf"}));
var a = document.createElement("a");
a.href = file;
a.download = "invoicePDF";
document.body.appendChild(a);
a.click();
window.onfocus = function () {
document.body.removeChild(a)
}
并将其直接保存在服务器上(仅供测试):
var fs = require('fs');
var wstream = fs.createWriteStream('C:/recurly.pdf');
wstream.write(result.content);
wstream.end();
但在这两种情况下,我都得到了无法正常工作的 pdf 文件。 Acrobat、Foxit 阅读器和 Chrome 无法打开此文件——它已损坏。
你对我错的地方有什么建议吗?也许我需要在保存之前进行一些内容转换或其他任何事情?
已添加
我已发送给客户端并在控制台中打印的此请求的结果(上图)。
try {
result = HTTP.call(
'GET',
'https://' + Meteor.settings.recurly.SUBDOMAIN + '.recurly.com/v2/invoices/' + invoiceId,
{
headers: {
Authorization: "Basic " + (new Buffer(Meteor.settings.recurly.API_KEY)).toString('base64'),
Accept: 'application/pdf'
}
}
);
} catch (err) {
result = e;
}
【问题讨论】:
-
您是如何获取数据的?你设置了
blobresponseType 吗? -
@MasterAM 我使用 recurly docs 来获取数据。 dev.recurly.com/docs/lookup-invoice-details
-
这不包括 JS API。可以发一些代码吗?
-
@MasterAM 我在帖子中添加了代码示例
标签: javascript node.js pdf meteor recurly