Javascript 使用pdf.js在画布中绘制矩形,并加载pdf文件

Javascript 使用pdf.js在画布中绘制矩形,并加载pdf文件,javascript,pdf,canvas,pdf.js,Javascript,Pdf,Canvas,Pdf.js,我正在尝试在pdf文件上绘制矩形。在pdf中绘制矩形时,矩形无法正确绘制 我想一次只画一个矩形,当我画新矩形时,旧矩形应该被删除,但它没有发生 这是我的密码: pdf渲染的渲染代码工作正常 鼠标移动功能无法正常工作 注 当我启用clearRect和putImageData函数时,矩形绘制正确,但画布pdf显示为空。这是附上的图片 当仅启用clearRect功能时,则在pdf中显示多个矩形。这是附上的图片 请检查以下内容,在创建新矩形之前需要清除现有矩形 function renderPage(n

我正在尝试在pdf文件上绘制矩形。在pdf中绘制矩形时,矩形无法正确绘制

我想一次只画一个矩形,当我画新矩形时,旧矩形应该被删除,但它没有发生

这是我的密码:

pdf渲染的渲染代码工作正常

鼠标移动功能无法正常工作

当我启用clearRect和putImageData函数时,矩形绘制正确,但画布pdf显示为空。这是附上的图片

当仅启用clearRect功能时,则在pdf中显示多个矩形。这是附上的图片


请检查以下内容,在创建新矩形之前需要清除现有矩形

function renderPage(num) {
    pageRendering = true;
    pdf.getPage(num).then(function (page) {
        var viewport = page.getViewport({ scale: scale });
        canvas.height = viewport.height;
        canvas.width = viewport.width;
        var renderContext = {
            canvasContext: ctx,
            viewport: viewport
        };
        var renderTask = page.render(renderContext);
        renderTask.promise.then(function () {
            pageRendering = false;

            //You need to clear the existing rectangle
            pdfPages[num] = ctx.getImageData(0, 0, canvas.width, canvas.height);

            //Now you can draw new rectangle
            drawRectangle(10, 10, 100, 50);
            if (pageNumPending !== null) {
                renderPage(pageNumPending);
                pageNumPending = null;
            }
        });
    });

    function drawRectangle(x, y, w, h) {
        ctx.strokeStyle = color;
        ctx.strokeRect(x, y, w, h);
    }

请检查以下内容,在创建新矩形之前需要清除现有矩形

function renderPage(num) {
    pageRendering = true;
    pdf.getPage(num).then(function (page) {
        var viewport = page.getViewport({ scale: scale });
        canvas.height = viewport.height;
        canvas.width = viewport.width;
        var renderContext = {
            canvasContext: ctx,
            viewport: viewport
        };
        var renderTask = page.render(renderContext);
        renderTask.promise.then(function () {
            pageRendering = false;

            //You need to clear the existing rectangle
            pdfPages[num] = ctx.getImageData(0, 0, canvas.width, canvas.height);

            //Now you can draw new rectangle
            drawRectangle(10, 10, 100, 50);
            if (pageNumPending !== null) {
                renderPage(pageNumPending);
                pageNumPending = null;
            }
        });
    });

    function drawRectangle(x, y, w, h) {
        ctx.strokeStyle = color;
        ctx.strokeRect(x, y, w, h);
    }
function renderPage(num) {
    pageRendering = true;
    pdf.getPage(num).then(function (page) {
        var viewport = page.getViewport({ scale: scale });
        canvas.height = viewport.height;
        canvas.width = viewport.width;
        var renderContext = {
            canvasContext: ctx,
            viewport: viewport
        };
        var renderTask = page.render(renderContext);
        renderTask.promise.then(function () {
            pageRendering = false;

            //You need to clear the existing rectangle
            pdfPages[num] = ctx.getImageData(0, 0, canvas.width, canvas.height);

            //Now you can draw new rectangle
            drawRectangle(10, 10, 100, 50);
            if (pageNumPending !== null) {
                renderPage(pageNumPending);
                pageNumPending = null;
            }
        });
    });

    function drawRectangle(x, y, w, h) {
        ctx.strokeStyle = color;
        ctx.strokeRect(x, y, w, h);
    }