Просмотр XPS и PDF в браузере

Мне нужно настроить просмотр документов в браузере. Документы могут быть в форматах PDF или XPS. Я попытался использовать iframe. В то время как PDF-документы отображаются, XPS-документы сразу загружаются. Мой проект построен на Django. Есть ли способ отображать XPS-файлы?

Мой JS:

function displayFile(element) {
  var objectId = element.id.substring('categories_'.length);
  var project_id = '{{ project.id }}';
  var url = `/pilot_doc/get_file/${objectId}/${project_id}/`;
  var options = {
      method: 'GET', 
      headers: {
          'Accept': 'application/octet-stream' 
      }
  };

  fetch(url, options)
      .then(response => {
          if (!response.ok) {
              throw new Error('Network response was not ok');
          }
          return response.json(); 
      })
      .then(data => {
          if (data.status === 'success') {
            var byteCharacters = atob(data.file);
            var byteNumbers = new Array(byteCharacters.length);
            for (var i = 0; i < byteCharacters.length; i++) {
              byteNumbers[i] = byteCharacters.charCodeAt(i);
            }
            var byteArray = new Uint8Array(byteNumbers);
            fileName = data.file_name;
            fileExtension = getFileExtension(fileName);
            console.log(fileExtension);
            var contentType;
            if (fileExtension === 'pdf') {
              contentType = 'application/pdf';
            } else if (fileExtension === 'xps') {
              contentType = 'application/vnd.ms-xpsdocument';
            } else {
              throw new Error('Unsupported file format');
            }
            var blob = new Blob([byteArray], {type: contentType}); 
            var url = URL.createObjectURL(blob);
            var iframe = document.createElement('iframe');
            var docBox = document.querySelector('.box.doc');
            var heightInPixels = docBox.offsetHeight;
            iframe.style.width = "100%";
            iframe.style.height = `${heightInPixels-30}px`; 
            iframe.src = url; 
            docBox.innerHTML = ''; 
            docBox.appendChild(iframe); 
          }
      })
      .catch(error => {
          console.error('There was a problem with your fetch operation:', error);
          alert('Ошибка при загрузке файла: ' + error.message);
      });
}

Это очень просто, если у вас правильная конфигурация браузера (для файлов, включающих PDF или другие типы документов).

Вот пример веб-файла XPS, отображаемого браузером при нажатии на него. http://file.fyicenter.com/b/sample.xps

Обратите внимание, что (как и во всех файлах) здесь просто не нужны ни Java, ни JavaScript, ни всплывающие окна (смотрите, чтобы в настройках безопасности было установлено блокирование). Даже изображения, особенно веб-баги, можно отключить.

Возможность использовать фрейм, новую вкладку или новое окно (по желанию или нежеланию) также является выбором пользователя. Сервер не может "навязать" возможность использования вложений.

Проще говоря, документ загружается прямо в браузер, основываясь на правильном типе Mime.

enter image description here

Разные браузеры с одинаковым включением программы просмотра PDF справа та же ссылка. но просто чтобы показать, что все зависит от пользователя Отсоединяемая вкладка в середине - это мой выбор Acrobat Dc для некоторых PDF. Рамка PDF слева - это "Изображение", поэтому я могу отключить ее, если захочу.

enter image description here

Вернуться на верх