2016-12-31 8 views
0

Мое веб-приложение делает запрос HTTPS GET внешним API. Что я получаю это PDF файл, который начинается с:Пустые страницы в PDF, полученные из API

%PDF-1.4 

То, что я хотел бы сделать, это сохранить эту PDF на сервере, чтобы обслуживать этот файл клиенту. Проблема в том, что в PDF есть несколько пустых страниц, где их не должно быть.

Вот код отвечает за извлечение PDF и сохранения его на сервер:

Meteor.http.get('url/' + chartId, { 
     headers: { 
     Authorization: 'Bearer ' + key.token 
     } 
    }, function(err, result) { 
     if(!err) { 
     var fs = Npm.require('fs'); 
     var path = process.env['METEOR_SHELL_DIR'] + '/../../../public'; 

     fs.writeFile(path + "/charts/" + Meteor.userId() + '.pdf', result.content, (function (err) { 
      if (err) { 
       console.log("Error:" + err); 
      } 
     })); 

     } else { 
     throw new Error('Error from API getting documents'); 
     } 
    }); 

Странная вещь, что PDF я экономлю на сервер показывает страницы с текстом на них, но показывает пустые страницы где должны быть изображения (диаграммы). Perhabs это проблема кодирования?

+1

Возможно ли, что 'result.content' возвращает содержимое в виде строки символов? В этом случае вам придется искать другое свойство, которое возвращает его как исходные байты. – mkl

+0

@mkl 'result.content' действительно возвращает строку символов. К сожалению, это единственные данные, которые я могу получить от ответа. Есть ли способ получить исходные байты из этой строки? – JoeriSmits

+0

Интерпретация двоичного файла как текста обычно является разрушительной, то есть необратимой. Поскольку я не настолько осведомлен о Javascript и, в частности, Meteor, я не знаю, является ли рассматриваемый случай исключением. – mkl

ответ

0

Хорошо, так как я сначала догадался, что это имеет какое-то отношение к кодированию. Убедитесь, что вы установили правильные заголовки в HTTP-запросе encoding: 'binary' и используете правильную кодировку при использовании .writeFile().

Источник: Node express save pdf from binary string