Загрузите или сохраните двоичные данные 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.

Другие вопросы по тегам