尝试更改嵌入中加载的 PDF 时出现问题

Issue trying to change a loaded PDF in the embed

我正在使用 Adob​​e PDF Embed API 并且可以在用户选择后成功显示 PDF。当我的应用程序启动时,我初始化了一个 DC View 对象:

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

在用户拖动文件后,我使用文件 reader 向其发出承诺:

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);

这非常有效……一次。如果我再次拖动一个文件,当它到达渲染部分时,只有嵌入顶部的文件名发生变化,而不是实际渲染的内容。

您需要在加载新文档之前重新创建 AdobeDC.View 对象。我猜这是因为如果某个操作需要一段时间才能解决,例如加载注释或执行搜索,则可能存在未解决的 Promises。您的新代码可能如下所示...

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);