pdf.js 如何知道文件渲染加载完成
时间: 2023-07-04 22:23:13 浏览: 214
在 pdf.js 中,可以通过监听 `PDFDocumentProxy` 对象的 `loadingTask` 的 `onProgress` 和 `onLoad` 事件来判断文件渲染加载的状态。
具体来说,在创建 `PDFDocumentProxy` 对象时,会返回一个 `Promise` 对象,然后可以通过 `then` 方法来获取 `PDFDocumentProxy` 对象,然后在 `PDFDocumentProxy` 对象上监听 `loadingTask` 的 `onProgress` 和 `onLoad` 事件,例如:
```
const loadingTask = pdfjsLib.getDocument(url);
loadingTask.promise.then((pdf) => {
pdf.getPage(1).then((page) => {
// 渲染第一页
const canvas = document.getElementById('pdf-canvas');
const context = canvas.getContext('2d');
const viewport = page.getViewport({ scale: 1 });
canvas.height = viewport.height;
canvas.width = viewport.width;
const renderTask = page.render({ canvasContext: context, viewport: viewport });
renderTask.promise.then(() => {
console.log('第一页渲染完成');
});
});
// 监听 loadingTask 的 onProgress 事件
loadingTask.onProgress = function(progressData) {
console.log(`已经加载 ${progressData.loaded / progressData.total * 100}%`);
};
// 监听 loadingTask 的 onLoad 事件
loadingTask.onLoad = function() {
console.log('PDF 文件加载完成');
};
});
```
在上面的代码中,当 `PDFDocumentProxy` 对象加载完成后,会输出 `PDF 文件加载完成`,当第一页渲染完成后,会输出 `第一页渲染完成`。同时,在渲染过程中,可以监听 `onProgress` 事件来获取加载进度。
阅读全文