Ошибка при попытке изменить загруженный PDF-файл во встроенном файле

Я использую Adobe PDF Embed API и могу успешно отображать PDF после выбора пользователя. Когда мое приложение запускается, я инициализирую объект DC View:

      let dcView = new AdobeDC.View({
    clientId: ADOBE_KEY, 
    divId: div
});

И после того, как пользователь перетащил файл, я использую программу чтения файлов, чтобы бросить ему обещание:

      let reader = new FileReader();
let name = this.pdfFile.name;
      
reader.onloadend = function(e) {
    let filePromise = Promise.resolve(e.target.result);
    dcView.previewFile({
        content: { promise: filePromise }, 
        metaData: { fileName: name }
    });

};
reader.readAsArrayBuffer(this.pdfFile);

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

1 ответ

Решение

Вам нужно будет воссоздать объект AdobeDC.View перед загрузкой нового документа. Я предполагаю, что это связано с тем, что могут быть неразрешенные обещания, если операция требует времени для разрешения, например, загрузка аннотаций или выполнение поиска. Ваш новый код может выглядеть так ...

      let reader = new FileReader();
let name = this.pdfFile.name;
      
reader.onloadend = function(e) {
    let filePromise = Promise.resolve(e.target.result);
    let dcView = new AdobeDC.View({
        clientId: ADOBE_KEY, 
        divId: div
    });        
    dcView.previewFile({
        content: { promise: filePromise }, 
        metaData: { fileName: name }
    });

};
reader.readAsArrayBuffer(this.pdfFile);
Другие вопросы по тегам