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>

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用pdf.js实现骑缝章时,如果你处理的是大型PDF文档,可能会面临一些性能和兼容性方面的挑战。下面是一些建议可以帮助你在处理大型PDF文档时实现骑缝章的兼容性: 1. 分页加载:对于大型PDF文档,将整个文档一次性加载到内存中可能会导致性能问题,特别是对于较低配置的设备。你可以考虑实现分页加载,即只加载当前显示页面及其周围几页的内容,而不加载整个文档。这样可以在保证性能的同时,提供流畅的用户体验。 2. 延迟加载:当用户滚动或翻页时,你可以使用延迟加载的方式来加载页面内容。这意味着只有当用户接近或到达某个页面时才开始加载该页面的内容。这样可以减少初始加载时间,并允许用户更快地查看和操作PDF文档。 3. 异步操作:在处理大型PDF文档时,尽可能使用异步操作来提高性能和响应性。例如,你可以使用`async/await`或Promise来管理页面加载、渲染和骑缝章等操作的顺序和并发性。 4. 性能优化:对于大型PDF文档,性能优化是非常重要的。你可以通过一些技术手段来提高渲染和操作的性能,如使用缓存、懒加载、虚拟列表等。此外,避免在主线程上执行耗时的操作,可以使用Web Worker来进行一些计算密集型任务。 5. 兼容性测试:在实际运行之前,进行兼容性测试是非常重要的。确保你的应用在不同浏览器和设备上都能正确加载、渲染和操作大型PDF文档,并且骑缝章功能正常工作。 请注意,pdf.js本身并不直接提供骑缝章功能,需要你使用canvas等技术手段来手动实现。以上建议主要关注于如何在处理大型PDF文档时提高性能和兼容性,并不涉及具体的骑缝章实现细节。具体的骑缝章实现方法和技术取决于你的需求和设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值