Как я могу преобразовать файл PDF в тип Blob в Angular 7? - PullRequest
0 голосов
/ 21 февраля 2019

Мой проект должен сгенерировать отчет в формате PDF, и я использую pdfcrowd (https://pdfcrowd.com), чтобы сделать это.

Мой подход прост и вызов от конца (Angular 7) кback-end (.Net Core 2.1) работает хорошо, однако, когда я получаю pdf в переднем конце, я получаю следующую ошибку:

Return: 200 -Ok

ошибка: SyntaxError: неожиданный токен% в JSON в позиции 0 в JSON.parse

Моя служба

GetReportPrint(e: PrintModel) {        
  let token = localStorage.getItem('token');
  let body = JSON.stringify(e);
  let headers = new HttpHeaders({ 
    'Content-type': 'application/json',
    'Authorization': token
  });

  return this._http.post<any>(
    this.API + 'Report', body, {
      headers: headers,
      responseType: 'blob'
    })
    .pipe(map((response) => {
      let file = response.blob();
      var blob = new Blob([file], {
        type: 'application/pdf'
      });

      FileSaver.saveAs(blob, "tes");
    }))     
}

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Попробуйте: вместо того, чтобы делать response.blob (), сделайте response.text ().

.pipe(map((response) => {
  let file = response.text();
  var blob = new Blob([file], {
    type: 'application/pdf'
  });

  FileSaver.saveAs(blob, "test.pdf");
}))     
0 голосов
/ 21 февраля 2019

У вас проблемы с анализом json, о чем говорит ваша ошибка.

Я бы предложил использовать GET для загрузки файла вместо POST, попробуйте что-то вроде:

this.http.get<any>(url, {responseType: 'blob'}).pipe(..);
...