PDF.js未按正确的页面顺序显示

vue使用pdfjs-dist/legacy/build/pdf.js的时候

发现多页面的时候,下载是正确的,查询的时候,页面的顺序会发生变化,比如一共九页,可能第二页的位置是9,然后其余的没有问题

就是 1 9 2 3 4 5 6 7 8这种

然后发现

let renderContext = {

canvasContext: ctx,

viewport: viewport,

};

page.render(renderContext);

render渲染的顺序不是按照我们期望的那种渲染

所以用async + await解决

<div id="pdf-canvas"></div>

<script>

methods: {

getRuleInfo() {

PdfJs.getDocument({ url: getRuleFileUrl, withCredentials: true }).promise.then((pdf) => {

document.getElementById("pdf-canvas").innerHtml = "";

this.renderPages(pdf);

});

},

async renderPages(pdf) {

for (var i = 1; i <= pdf.numPages; i++) {

await pdf.getPage(i).then((page) => {

let canvasList = document.getElementById("pdf-canvas");

let canvas = document.createElement("canvas");

canvasList.appendChild(canvas);

let ctx = canvas.getContext("2d");

let dpr = window.devicePixelRatio || 1;

let ratio = dpr;

let viewport = page.getViewport({ scale: screen.availWidth / page.getViewport({ scale: 1 }).width });

canvas.width = viewport.width * ratio;

canvas.height = viewport.height * ratio;

canvas.style.width = viewport.width + "px";

canvas.style.height = viewport.height + "px";

ctx.setTransform(ratio, 0, 0, ratio, 0, 0);

let renderContext = {

canvasContext: ctx,

viewport: viewport,

};

page.render(renderContext);

});

}

},

}

<script>

相关推荐
一枚前端小姐姐17 小时前
低代码平台表单设计系统架构分析(实战一)
前端·低代码·架构
HelloReader17 小时前
Tauri 1.0 升级到 Tauri 2.0从“能跑”到“跑得稳”的迁移实战指南(含移动端准备、配置重构、插件化 API、权限系统)
前端
apollo_qwe17 小时前
深入解析Vue的mixins与hooks:复用逻辑的两种核心方式
vue.js
JunjunZ17 小时前
uniapp 文件预览:从文件流到多格式预览的完整实现
前端·uni-app
_Eleven17 小时前
React 19 深度解析:Actions 与 use API 源码揭秘
前端
_AaronWong18 小时前
Vue3+Element Plus 通用表格组件封装与使用实践
前端·javascript·vue.js
前端西瓜哥18 小时前
图形编辑器开发:文字排版如何实现自动换行?
前端
全栈老石18 小时前
手写一个无限画布 #3:如何在Canvas 层上建立事件体系
前端·javascript·canvas
晴殇i18 小时前
BroadcastChannel:浏览器原生跨标签页通信
前端·面试
DeathGhost18 小时前
分享URL地址到微信朋友圈没有缩略图?
前端·html