Как преобразовать pdf-данные, отправленные с сервера nodejs, в pdf в angularjs - PullRequest
1 голос
/ 13 апреля 2019

Я пытаюсь загрузить PDF-файл, созданный на сервере nodejs.Когда я отправляю данные из pdf-файла, он передается во внешний интерфейс angularjs, но я пытался преобразовать объект blob в pdf, но pdf не показывает данных.

Уже пробовал {responseType: 'arraybuffer'}, как упоминалось в других ответах.но все же мой pdf не показывает никаких данных.

Вот сервер nodejs, который будет обслуживать данные pdf:

var pdff = require('html-pdf');
pdff.create(html, options).toFile('./report.pdf', function(err) {
if (err) return console.log(err);
  res.contentType("application/pdf");
  res.download("./report.pdf");

});

В приведенном выше коде - report.pdf генерируется на сервере, которыйполностью в порядке.

Вот код angularjs:

   app.controller("ExampleCtrl",['FileSaver', 'Blob','$http', function(FileSaver, Blob,$http) {
  var vm = this;
        vm.consolidate=function(){
         $http.post('/mngmnt/consolidate_grv',{responseType: 'arraybuffer'}).then(function(response){
        //console.log(response.data);
        console.log(response);
        //var byteArray = new Uint8Array(response.data);
       var blob = new Blob([response.data], {  type: 'application/pdf'});
         console.log(blob);
          var fileURL = URL.createObjectURL(blob);
        //FileSaver.saveAs(blob, 'report.pdf');
        window.open(fileURL)

     });
   }
}]);

Все работает правильно, но сгенерированный PDF не показывает те же данные, что и на стороне сервера.

Я ожидаю генерировать тот же pdf, что и на стороне сервера

1 Ответ

0 голосов
/ 13 апреля 2019
app.controller("ExampleCtrl", function(FileSaver, Blob,$http) {
     var vm = this;
     vm.consolidate=function(){
         $http.post('/mngmnt/consolidate_grv', {}, {responseType: 'blob'})
           .then(function(response){
             //console.log(response.data);
             console.log(response);
             //var byteArray = new Uint8Array(response.data);
             var blob = response.data;
             console.log(blob);
             var fileURL = URL.createObjectURL(blob);
             //FileSaver.saveAs(blob, 'report.pdf');
             window.open(fileURL)    
         });
     };
});

Если вы настаиваете на использовании запроса POST, вторым аргументом метода $http.post должны быть данные для тела запроса. Объект параметров должен быть третьим аргументом.

...