echosign 组合文档 api
echosign combinedDocument api
https://api.na1.echosign.com/api/rest/v5/agreements/{agreementId}/combinedDocument
我正在尝试从响应正文创建一个文件,但它正在创建一个我无法打开的文件。它需要密码,即使文件中没有密码。我想这一定和编码/解码有关。
我正在使用 node express 服务器。以下是我使用的几行代码:
var request = require('request');
request({
baseUrl: 'https://api.na1.echosign.com/api/rest/v5',
url: '/agreements/' + req.params.id + '/combinedDocument',
headers: {'Access-Token': process.env.ECHOSIGN_INTEGRATIONKEY}
},
function(error, response, body){
if(error) {
res.send(error);
}
else {
var buf = new Buffer(body)
res.set({
'Content-Disposition': 'attachment; filename=test.pdf',
'Content-Type': 'application/pdf; charset=utf-8'
});
res.write(buf);
res.end();
}
}
);
这就是最终起作用的方法,以防其他人偶然发现它。我认为问题在于从 API 返回的数据是一个流,它需要具有分块逻辑,然后连接起来以避免损坏。
还包括编码为 base64,将其推送到数据库中,然后将其取回,解码并将其推送到浏览器。我不打算就这样离开它,但以这种方式设置它以测试整个周期。
router.get('/echosign/agreement/:id', function(req, res) {
if (req.user !== 'myUserId') {
console.log(req.user);
res.redirect('/');
} else {
var request = require('request');
var data = [];
request({
baseUrl: 'https://api.na1.echosign.com/api/rest/v5',
url: '/agreements/' + req.params.id + '/combinedDocument',
headers: {'Access-Token': process.env.ECHOSIGN_INTEGRATIONKEY}
}).on('data', function(chunk){
data.push(chunk);
})
.on('end', function(){
data = Buffer.concat(data).toString('base64');
client.connect(function(err) {
if(err) {
return console.error('could not connect to postgres', err);
}
client.query("UPDATE agreements SET file = '" + data + "' WHERE agreementid = '" + req.params.id + "' RETURNING agreement, file", function(err, result) {
if(err) {
return console.log(result, err);
}
client.end();
res.set({
'Content-Type': 'application/pdf;charset=UTF-8',
'Content-Disposition': "inline; filename='" + result.rows[0].agreement.name + ".pdf'"
});
res.send(new Buffer(result.rows[0].file, 'base64'));
});
});
});
}
});
https://api.na1.echosign.com/api/rest/v5/agreements/{agreementId}/combinedDocument
我正在尝试从响应正文创建一个文件,但它正在创建一个我无法打开的文件。它需要密码,即使文件中没有密码。我想这一定和编码/解码有关。
我正在使用 node express 服务器。以下是我使用的几行代码:
var request = require('request');
request({
baseUrl: 'https://api.na1.echosign.com/api/rest/v5',
url: '/agreements/' + req.params.id + '/combinedDocument',
headers: {'Access-Token': process.env.ECHOSIGN_INTEGRATIONKEY}
},
function(error, response, body){
if(error) {
res.send(error);
}
else {
var buf = new Buffer(body)
res.set({
'Content-Disposition': 'attachment; filename=test.pdf',
'Content-Type': 'application/pdf; charset=utf-8'
});
res.write(buf);
res.end();
}
}
);
这就是最终起作用的方法,以防其他人偶然发现它。我认为问题在于从 API 返回的数据是一个流,它需要具有分块逻辑,然后连接起来以避免损坏。
还包括编码为 base64,将其推送到数据库中,然后将其取回,解码并将其推送到浏览器。我不打算就这样离开它,但以这种方式设置它以测试整个周期。
router.get('/echosign/agreement/:id', function(req, res) {
if (req.user !== 'myUserId') {
console.log(req.user);
res.redirect('/');
} else {
var request = require('request');
var data = [];
request({
baseUrl: 'https://api.na1.echosign.com/api/rest/v5',
url: '/agreements/' + req.params.id + '/combinedDocument',
headers: {'Access-Token': process.env.ECHOSIGN_INTEGRATIONKEY}
}).on('data', function(chunk){
data.push(chunk);
})
.on('end', function(){
data = Buffer.concat(data).toString('base64');
client.connect(function(err) {
if(err) {
return console.error('could not connect to postgres', err);
}
client.query("UPDATE agreements SET file = '" + data + "' WHERE agreementid = '" + req.params.id + "' RETURNING agreement, file", function(err, result) {
if(err) {
return console.log(result, err);
}
client.end();
res.set({
'Content-Type': 'application/pdf;charset=UTF-8',
'Content-Disposition': "inline; filename='" + result.rows[0].agreement.name + ".pdf'"
});
res.send(new Buffer(result.rows[0].file, 'base64'));
});
});
});
}
});