将二进制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!');
})
}
})
任何人可以帮助我在这里?我知道这听起来很愚蠢。搜索了很多博客,找不到合适的。任何提示都表示赞赏。
所有的搜索,并几经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以及。
好的,我终于可以写入文件了。它非常简单: 'fs.writeFile('./ public/output.pdf',new Buffer(result.data,“base64”),function(response){console.log('File Saved!'); });' –
如果PDF的内容是不是私人的,这将是很好有一个完整的样本 –