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>

相关推荐
90后的晨仔1 小时前
别再搞混了!uni-app 中 node_modules 和 uni_modules 到底是什么关系?
前端
kyriewen2 小时前
面试官问"这段逻辑为什么这样写"——我才发现,这半年我写的代码,我自己都解释不了
前端·javascript·面试
谢小飞2 小时前
大文件上传很难?学会这招,GB文件秒传不是梦
前端·node.js
程序员黑豆3 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
To_OC3 小时前
别只拿 useRef 绑 DOM 了,搭配 Web Worker 解决页面卡顿才是真的香
前端·react.js·dom
IT_陈寒4 小时前
Vue的响应式让我原地破防,原来问题出在这
前端·人工智能·后端
子兮曰4 小时前
Bun vs Node.js 深度对决:跑分快 4 倍,真实业务只剩 3%,2026 年到底该怎么选?
前端·后端·typescript
计算机魔术师5 小时前
终端用户
前端
码事漫谈5 小时前
把 AI 拆掉,你的系统还能跑吗?
前端·后端
默_笙6 小时前
⛵ 我用 React + TS 做了个"调色盘",顺便学会了企业级项目的目录架构
前端·javascript