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>

相关推荐
糕冷小美n4 小时前
elementuivue2表格不覆盖整个表格添加固定属性
前端·javascript·elementui
小哥不太逍遥4 小时前
Technical Report 2024
java·服务器·前端
沐墨染4 小时前
黑词分析与可疑对话挖掘组件的设计与实现
前端·elementui·数据挖掘·数据分析·vue·visual studio code
anOnion4 小时前
构建无障碍组件之Disclosure Pattern
前端·html·交互设计
threerocks4 小时前
前端将死,Agent 永生
前端·人工智能·ai编程
问道飞鱼5 小时前
【前端知识】Vite用法从入门到实战
前端·vite·项目构建
爱上妖精的尾巴5 小时前
8-10 WPS JSA 正则表达式:贪婪匹配
服务器·前端·javascript·正则表达式·wps·jsa
Zhencode6 小时前
Vue3响应式原理之ref篇
vue.js
小疙瘩7 小时前
element-ui 中 el-upload 多文件一次性上传的实现
javascript·vue.js·ui
Aliex_git7 小时前
浏览器 API 兼容性解决方案
前端·笔记·学习