#angular #internet-explorer #pdf.js #angular-elements #pdfjs-dist
#angular #internet-explorer #pdf.js #angular-elements #pdfjs-dist
Вопрос:
Как правильно импортировать pdfjs-dist и использовать версию es5 для Internet Explorer?
Я использую Angular 8 и пользовательские элементы, то, что я сделал до сих пор, это
npm install --save pdfjs-dist
Затем в моем компоненте я импортирую скрипт:
import * as pdfjs from 'pdfjs-dist'
а затем я создам переменную
pdfjs: any
и используйте такие функции, как
this.pdfjs.getDocument()
Это будет отлично работать для Chrome, но в IE будут появляться ошибки, такие как действие объекта не поддерживается. Я думаю, это ожидается, потому что он не использует файлы es5.
Я попытался изменить pdfjs-dist в модулях узла для разрешения папки es5, но в конце, когда я загружаю свой компонент, я получил сообщение об ошибке Weakset undefined или что-то в этом роде.
Я также попытался вручную динамически импортировать скрипты и добавить их с помощью document.createElement('script')
and document.getElementsByTagName("head")[0].appendChild(sc)
. Этот метод будет работать лучше всего, но с точки зрения производительности он очень плох, потому что ему нужно дождаться завершения загрузки скриптов, прежде чем вы сможете что-либо сделать.
Как правильно использовать этот пакет для IE? Документация для этой библиотеки и сам Internet Explorer — это просто мусор.
Комментарии:
1. Я предлагаю сохранить папку и файлы такими, какие они есть в node_modules, но попробуйте импортировать файл, как показано ниже
import * as pdfjsLib from 'pdfjs-dist/es5/build/;
. Это может помочь вам ссылаться на файлы ES5 для браузера IE. Вы можете выполнить тест на своей стороне и сообщить нам о результатах вашего теста.2. Да, я пробовал это, но это выдаст сообщение об ошибке: не удается найти модуль ‘pdfjs-dist / es5 / build’
3. Если возможно, можете ли вы поделиться примером проекта Angular? Мы можем видеть, как на самом деле вы пытаетесь его использовать. Вы можете удалить всю конфиденциальную информацию из образца. Нам не требуется никакой личной информации. Спасибо за понимание.