Skip to content

在拖动滚动条向下滚动的时候会出现canvas 居中的情况(在滚动过程中没有更新canvas的x坐标) #13

@GuoJikun

Description

@GuoJikun
let scrollBarInstance = new ScrollBar(leaferInstance as any, {
        theme: 'light',
        minSize: 24,
    });

const renderPage = async () => {
    if (!pdfDoc) return
    if (!leaferInstance) return

    const width = leaferInstance.tree.width ?? 0

    let offsetY = 0

    for (let pageNum = 1; pageNum <= pager.value.total; pageNum++) {
        const page = await pdfDoc.getPage(pageNum)

        const viewport = page.getViewport({
            scale: pager.value.scale,
            rotation: pager.value.rotation,
        })

        const x = (width - viewport.width) / 2
        console.log(width, viewport.width, x)
        const canvasNode = new Canvas({
            x: x,
            y: offsetY,
            width: viewport.width,
            height: viewport.height,
            scale: pager.value.scale,
        })

        await page.render({
            canvasContext: canvasNode.context as unknown as CanvasRenderingContext2D,
            canvas: null,
            viewport,
        }).promise

        canvasNode.paint()
        leaferInstance.tree.add(canvasNode, pageNum)
        offsetY += viewport.height + 16

        page.cleanup()
    }

    // 渲染完成后使画布居中并更新滚动条
    nextTick(() => {
        // leaferInstance?.zoom('fit', 0, 'x')
        scrollBarInstance?.update()
    })
}

上面就是主要的代码,具体的可以点击查看

正常应该这样显示:

Image

拖拽过程中就会出现:

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions