バイナリデータからpdfファイルを保存する際に問題があります。私はWebサービスからバイナリを取得し、エクスプレスサーバ(ミドルウェアとして)はクライアントにファイルを送信する必要があります。 問題は、クライアントとAdobe Acrobat Readerで空白のPDFが表示されるため、バイナリデータを保存/エンコードするときにエラーが発生したと考えています。ノードエクスプレスバイナリ文字列からPDFを保存
%PDF-1.5
%����
2 0 obj
<</Length1 17948/Length 9587/Filter/FlateDecode>>stream
x��{y`՝���!ɖ-Y�iɖF�e˖,۲lَ��v�$���s8v��B�$�(4nHiI�RP��@�n��������-P�-Wbi����H��������y��|���^��}3�p9� -[3�~�+���< ��l�E���E7�7��Њ�+�l\�1��?P��rt�
�G��!}ؿj���ɿ~�@�+H߰
o�t�&��u��5m�??ن�5�~���e�����й���3����#��~���ԷX��%����������
k\��\z���d���O�[email protected]�A9(-�A>�@`�B0� �`+ؠ���Q��\ �<��R�A��*��*A5�@-��"P
�Fh�f�-�
[:
exports.downloadReceipt = function(req, res) {
var idPrenotazione = req.params.idPrenotazione;
var options = {
'method': 'GET',
'uri': api_url + '/ricevute/'+idPrenotazione,
'headers': {
'Authorization': req.get('Authorization')
}
}
request(options, function(error, response, body) {
var date = new Date().getTime();
var filename = 'ricevuta_'+idPrenotazione+'_'+date+'.pdf';
var file = folderPath + filename;
fs.writeFile(file, body, function(err) {
if(err)
console.log(err);
else
console.log("The file was saved!");
});
// for the moment I only save the file on server file system
res.end();
});
}
はまた、私は、Webサービスから取得した文字列は、このようなものであるとし、オプション
var options = { encoding: 'binary' };
var wstream = fs.createWriteStream(file_);
wstream.write(body);
wstream.end();
をコードせず、代わりにWRITEFILEのcreateWriteStreamを使用しようとしました......]
0000042111 00000 n
0000042252 00000 n
0000042393 00000 n
trailer
<</Root 7 0 R/ID [<10edca6daaad5a49919bad108ba77f0a><492e2d9a8ca810421f41667217724e69>]/Info 4 0 R/Size 183>>
%iText-5.5.8
startxref
173008
%%EOF
私は間違っているの?私はちょうどbase64でイメージを取得する関数を持っています(そして、同じWebサービスから)writeFileを使ってサーバファイルシステムに保存すると、うまくいきます。
ありがとうございました
これは私にトンを助けました!共有していただきありがとうございます – Linx