在多次render()操作期间无法使用同一画布

时间:2019-10-15 14:23:20

标签: javascript canvas render pdf.js

我正在尝试在for循环上使用pdf.js渲染PDF页面。 现在只有最后一页正在呈现,并且在控制台上出现错误:

  

”未捕获(承诺)错误:在执行期间无法使用同一画布   多个render()操作。使用其他画布或确保以前的   操作被取消或完成。在   InternalRenderTask.initializeGraphics(api.js:2500)“

有人知道为什么会发生麻痹以及如何解决吗?

我试图查看其他线程,但找不到可行的解决方案。

代码:

<script src="/pdf-js/build/pdf.js"></script>
<script>
var pdfurl = document.getElementById("input_10_1").value;
pdfjsLib.getDocument(pdfurl).then(doc => {

for (var i = 0; i < doc._pdfInfo.numPages; i++)
{
  var dataFileNumber = i+1;
  $(".files-container").append('<div class="file-thumbnail available" draggable="false" data-file-number="'+dataFileNumber+'" id="container-number-'+(dataFileNumber)+'"><canvas id="canvas-number-'+(dataFileNumber)+'"></canvas></div>');

        var container = document.getElementById('container-number-'+dataFileNumber);
        var myCanvas = document.getElementById('canvas-number-'+dataFileNumber);

        doc.getPage(parseInt(dataFileNumber)).then(page => {

        var viewport = page.getViewport(1);
        var scale = container.clientWidth / viewport.width * 0.8;
        var context = myCanvas.getContext("2d");
        viewport = page.getViewport(scale);
        myCanvas.height = viewport.height;
        myCanvas.width = viewport.width;

        page.render({canvasContext: context , viewport: viewport});

        });  

}
</script>

0 个答案:

没有答案