将PDF二进制数据编码为base64,不能与NodeJS一起使用

我试图得到一个来自API的PDFstream返回,并parsing到base64将其embedded到客户端,API请求的主体是这样返回:

%PDF-1.5 %     4 0 obj << /Type/XObjcect /Subtype/Image /Width 799 /Height 70 /ColorSpace/DeviceGray /BitsPerComponent 8 /Filter/FlateDecode /Length 5181 >> stream x   =H#       A & )   B   4iba &O8H . . . (The rest was omitted) 

我试图parsingbase64这种方式:

 console.log(typeof body); // STRING const encoded = new Buffer.from(body).toString('base64'); //PDF NOT WORKING 

但是,当我得到这个base64,并将其embedded到HTML它说,该文件无法运行,同样的事情发生时,我试图将其保存为.PDF文件。

当我尝试parsingbase64相同的pdf,但这次从一个下载的PDF,embedded在HTML中的base64代码工作正常。

  fs.readFile('/home/user/downloaded.pdf', function (err, data) { if (err) throw err; console.log(typeof data); //OBJECT const pdf = data.toString('base64'); //PDF WORKS }); 

我正在使用const request = require('request'); 提出要求。

当你提出你的请求时,你应该把选项编码设置为null来获取Buffer而不是String

 request({ method: 'GET', encoding: null, uri: 'http://youdomain.com/binary.data' }, (err, resp, data)=>{ console.log(typeof data) //should be an Object console.log(data.toString('base64')) })