Node express save pdf from binary string
I found the problem! I needed to specify 'encoding': 'binary'
in request options and in writeFile: fs.writeFile(file, body, 'binary', function(err) {
.
Now I can open and send correctly image and pdf from binary string.
![Alessandro Mercurio](https://i.stack.imgur.com/Hxw15.jpg?s=256&g=1)
Alessandro Mercurio
Updated on July 16, 2022Comments
-
Alessandro Mercurio almost 2 years
I have a problem saving a pdf file from binary data. I get the binary from a web service and my express server (as middleware) should send the file to the client. The problem is that client and adobe acrobat reader show a blank pdf, so I'm thinking that I done some error saving/encoding the binary data.
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(); }); }
I also tried to use createWriteStream instead of writeFile, with and without encoding option
var options = { encoding: 'binary' }; var wstream = fs.createWriteStream(file_); wstream.write(body); wstream.end();
The string that I get from web service is something like this:
%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�x@�A9(-�A>�@`�B0� �`+ؠ���Q��\ �<��R�A��*��*A5�@-��"P �Fh�f�-�
[.....]
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
What I'm doing wrong? I just have a function that get an image (from the same web service) in base64 and I save it on server file system with writeFile and it works well.
Thanks for help
-
Linx over 6 yearsThis helped me a ton! Thank you for sharing
-
Satyajeet about 5 yearsThanks a ton. Wasted more then 2 hours.
-
Hariharan AR almost 5 years@Ciotto I tried this code. It create a pdf file. but, i can't open the file. it show me the "Can't validate the signature"
-
Alessandro Mercurio almost 5 yearsHi @HariharanAR unfortunately I didn't work on this project anymore and I never managed pdf with signature. Can you share your code to be sure that you do it correctly?
-
sudonitin almost 4 yearsI am getting a blank PDF with the expected number of pages. @Ciotto