将二进制PDF数据下载或保存到本地驱动器

问题描述:

我正在与使用web服务和SOAP进行请求的客户端进行协作。我有Node-Express应用程序并执行请求,我正在使用soap节点模块,该模块返回一个具有二进制数据属性的对象。数据看起来是这样的:将二进制PDF数据下载或保存到本地驱动器

JVBERi0xLjQKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2Jq \ n CjIgMCBvYmoKPDwKL1R5cGUgL091dGxpbmVzCi9Db3VudCAwCj4 + CmVuZG9iagozIDAgb2JqCjw8 \ n Ci9UeXBlIC9QYWdlcwovQ291bnQgNAovS2lkcyBbMTggMCBSIDE5IDAgUiAyMCAwIFIgMjEgMCBS \ n .... .... ....

正如你所看到的,有\ n在固定长度之后。

如何将上述二进制数据转换为PDF并下载。我们的客户说它具有转换为PDF并下载所需的所有必需数据。 我尝试使用fs.writeFile()将它写入一个文件夹,但是当我尝试打开该文件时说它文件已损坏。这里有一个代码片段:

soapClient.MyFunction(arguments, function(err, result){ 
 
    if(err) throw err; 
 
    if(result){ 
 
    console.log(result.data) //... Has the Binary data JVBERi0xLjQK.... 
 

 
    fs.writeFile('./output.pdf', result.data, {encoding : 'binary'},  function(res){ 
 
      console.log('File saved!'); 
 
     }) 
 
    } 
 
})

任何人可以帮助我在这里?我知道这听起来很愚蠢。搜索了很多博客,找不到合适的。任何提示都表示赞赏。

+0

如果PDF的内容是不是私人的,这将是很好有一个完整的样本 –

所有的搜索,并几经OK,并开启,终于能够写入文件:

fs.writeFile('./public/output.pdf', new Buffer(result.data, "base64"), function(response){ console.log('File Saved!'); });

我会先通过复制尝试用简单的HTML页面编码型动物粘贴数据:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <title></title> 
    </head> 
    <body> 

     <a href="data:application/pdf;base64,JVBERi0xLjQK....">Download Base64</a> 
     <a href="data:application/pdf;binary,JVBERi0xLjQK....">Download Binary</a> 

    </body> 
</html> 

为什么不也有和没有/N试图为你注意到了。

然后,当你能够打开文件,我们可以看到如何自动化过程。

在我脑海里回来的事情是,IE浏览器遇到了pdf MIME类型的问题,请尝试application/octet-stream以及。

+0

好的,我终于可以写入文件了。它非常简单: 'fs.writeFile('./ public/output.pdf',new Buffer(result.data,“base64”),function(response){console.log('File Saved!'); });' –