尝试更改嵌入中加载的 PDF 时出现问题
Issue trying to change a loaded PDF in the embed
我正在使用 Adobe 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);
我正在使用 Adobe 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);