Как загрузить PDF-файлы в Internet Explorer 11 (безопасно)? - PullRequest
0 голосов
/ 03 июня 2019

У меня есть некоторый рабочий код, который получает PDF от вызова API и отображает PDF на странице во всех браузерах.

Однако до меня дошло, что метод msSave​OrOpen​Blob устарел и не должен использоваться в производственных сборках.

Я нашел API для загрузки , однако этот не поддерживается в Edge / Internet Explorer.

Итак, мой вопрос: каков рекомендуемый подход? Существует ли Edge / IE полизаполнение для API загрузок?

Текущее решение JavaScript (Angular):

async downloadPDF(label, doc) {
    this.selectedDocumentLabel = label;
    const anchorTag = document.getElementById(doc) as HTMLAnchorElement;
    const endPoint = `${this.logConfig.docsUrl}/${doc}`;
    try {
      const b64Data = await this.hrdocsService.getDocumentByUUID(endPoint, this.ibmclientidData, this.tokenData); // Returns base64string
      if (b64Data) {
        if (window.navigator && window.navigator.msSaveOrOpenBlob) { // download docs in IE
          const byteChars = atob(b64Data);
          const byteNumbers = new Array(byteChars.length);
          for (let i = 0; i < byteChars.length; i++) {
             byteNumbers[i] = byteChars.charCodeAt(i);
          }
          const byteArray = new Uint8Array(byteNumbers);
          const blob = new Blob([byteArray], { type: 'application/pdf' });
          window.navigator.msSaveOrOpenBlob(blob);
          const url = window.URL.createObjectURL(blob);
          anchorTag.href = url;
          anchorTag.click();
        } else {
          // Do PDF stuff in Chrome, Firefox, Edge, etc
          const decoded = 'data:application/pdf;base64,' + b64Data;
          anchorTag.href = decoded;
          anchorTag.click();
        }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...