当前位置: 首页 > news >正文

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>


http://www.mrgr.cn/news/3076.html

相关文章:

  • 【设计模式】观察者模式和订阅发布模式
  • java 数据结构
  • YOLOV8对于classify分类任务更换resnet18主干网络
  • Camunda BPMN 基础组件
  • Springcloud从零开始--Eureka
  • css-元素的显示与隐藏
  • Spring项目:文字花园(四)
  • 如何修复掉入水中的 iPhone 且不丢失数据
  • 利用网络爬虫获取数据的刑事责任分析
  • (分析篇章)从海量信息中脱颖而出:Workflow智能分析解决方案,大语言模型为AI科技文章打造精准摘要评分体系
  • docker逃逸手法
  • 【Qt】 编辑框 | 按钮 | 坐标系 的 初步了解
  • 20240820飞凌的OK3588-C的核心板在Linux R4下使用poweroff关机
  • element-plus form 表单嵌套表格树单行校验问题
  • 硅谷物理服务器有哪些关键优势和特点
  • C语言典型例题46
  • nvidia系列教程-AGX-Orin 外接rtc DS1340芯片调试
  • nginx支持的不同事件驱动模型
  • 【IDEA】idea配置服务器没有tomcat
  • Postman内置动态参数和自定义动态参数