Загрузите или сохраните двоичные данные PDF на локальный диск
Я работаю с клиентом, который использует веб-сервис и SOAP для отправки запросов. У меня есть приложение Node-Express, и для выполнения запроса я использую модуль мыльного узла, который возвращает мне объект со свойством, имеющим двоичные данные. Данные выглядят примерно так:
JVBERi0xLjQKMSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2Jq \ п CjIgMCBvYmoKPDwKL1R5cGUgL091dGxpbmVzCi9Db3VudCAwCj4+CmVuZG9iagozIDAgb2JqCjw8\ п Ci9UeXBlIC9QYWdlcwovQ291bnQgNAovS2lkcyBbMTggMCBSIDE5IDAgUiAyMCAwIFIgMjEgMCBS\ п............
Как видите, после фиксированной длины есть \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!');
})
}
})
Кто-нибудь может помочь мне здесь? Я знаю, это звучит глупо. Искал много блогов, не смог найти правильный. Любые советы приветствуются.
2 ответа
ОК после всех поисков и поворотов, наконец-то удалось записать файл:
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 были проблемы с MIME-типом pdf, попробуйте также с application / octet-stream.