Не удалось загрузить PDF-файл, но можно просмотреть данные

#javascript #asp.net-mvc #typescript

Вопрос:

Я получаю эту ошибку из-за того, что Chrome не смог загрузить PDF-документ. Я вижу содержимое данных в окне консоли, поэтому у меня есть возвращаемые данные, я просто не уверен, почему они не будут отображаться? Если я File.WriteAllBytes на диск, он откроется нормально, так что, возможно, что-то с созданием new Blob

Не удалось загрузить PDF-документ.

Отладчик

код ts

  printItems(versionKeys: string[]): JQueryPromise<any> {
        console.log('printItems');
        $.ajax({
            type: "post",
            contentType: "application/json",
            data: JSON.stringify(versionKeys),
            url: this.apiUrls.PrintTemplates,
            success: function (data, status, xhr) {
                console.log('printItems');
                console.log(data);
                let blob = new Blob([data.Content], { type: data.ContentType });
                var url = URL.createObjectURL(blob);
                console.log(url);
                window.open(url);
                console.log('success');
            }
        });

        return;
    }
 

Ошибка

введите описание изображения здесь

Комментарии:

1. Вы имеете в виду использование Uint8Array ?`

Ответ №1:

Я преобразовал строку base64 в байт

   var binary_string = window.atob(data.Content)
  var len = data.Content.length;
  var bytes = new Uint8Array(len);
  for (var i = 0; i < len; i  ) {
      bytes[i] = binary_string.charCodeAt(i);
  }
  let blob = new Blob([bytes.buffer], { type: data.ContentType })

  var url = URL.createObjectURL(blob);

  window.open(url);