複数のPDFファイルを受け取り、REST-APIからダウンロードする必要があります。
Auth and connectの後、request-promiseを使用してファイルをダウンロードしようとします。
const optionsStart = {
uri: url,
method: 'GET',
headers: {
'X-TOKEN': authToken,
'Content-type': 'applcation/pdf'
}
}
request(optionsStart)
.then(function(body, data) {
let writeStream = fs.createWriteStream(uuid+'_obj.pdf');
console.log(body)
writeStream.write(body, 'binary');
writeStream.on('finish', () => {
console.log('wrote all data to file');
});
writeStream.end();
})
リクエストによりpdf(約1〜2MB)が作成されますが、開くことができません。 (Macプレビューでは空白のページが表示され、Adobeショーでは=>
このドキュメントを開くときにエラーが発生しました。このドキュメントを読む際に問題が発生しました(14)。
ファイルをダウンロードするAPIエンドポイントに関する情報がありません。ちょうどこのカールがあります:
curl -o doc.pdf --header "X-TOKEN: XXXXXX"
http://XXX.XXX/XXX/docs/doc1
私の間違いはどこですか?
更新:
編集中にファイルを開いたところ、ファイルは次のようになります。
その経験はありません:-)
エンコーディングを追加: 'binary'をリクエストオプションに追加します。
const optionsStart = {
uri: url,
method: "GET",
encoding: "binary", // it also works with encoding: null
headers: {
"Content-type": "application/pdf"
}
};
追加 encoding: null
からリクエストオプション:
const optionsStart = {
uri: url,
method: "GET",
encoding: null,
headers: {
"Content-type": "application/pdf"
}
};
次に、応答をバッファに変換します(必要な場合)。
const buffer = Buffer.from(response);
これを試して
const optionsStart = {
uri: url,
method: 'GET',
headers: {
'X-TOKEN': authToken,
'Content-type': 'applcation/pdf'
},
encodig: null
}
request(optionsStart, (err, resp) => {
let writeStream = fs.createWriteStream(uuid+'_obj.pdf');
writeStream.write(resp.body, 'binary');
writeStream.on('finish', () => {
console.log('wrote all data to file');
});
writeStream.end();
})