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>

相关推荐
Hyyy2 小时前
Function Calling / Tool Use的原理和实现模式
前端·llm·ai编程
爱勇宝2 小时前
从 Ctrl+CV 到 Enter:程序员正在失去什么
前端·后端·程序员
徐小夕2 小时前
我们开源了一款“框架无关”的思维导图编辑器,3分钟集成到任意系统
前端·javascript·github
PBitW2 小时前
GPT训练我的第三天,明白了应该咋说满分回答!😕😕😕
前端·javascript·面试
摸着石头过河的石头2 小时前
前端多仓库管理:从混乱到有序的进化之路
前端
星栈3 小时前
写 Dioxus Demo 不难,难的是把它写成项目
前端·rust·前端框架
labixiong3 小时前
还原一个完整符合规范的 Promise(二)
前端·javascript
时光足迹3 小时前
腾讯云 TRTC UniApp SDK 从入门到上线
前端·vue.js·uni-app
时光足迹3 小时前
uni-app 里把加密视频嵌入页面播放?我分析了 4 种方案,只有 1 种接近完美
前端·vue.js·uni-app
时光足迹3 小时前
JPush UniApp UTS 插件完全参考手册:API、事件与厂商通道一网打尽
vue.js·ios·uni-app