将页面呈现到pdf.js时为什么会出现内存泄漏?

时间:2018-04-12 06:48:39

标签: javascript promise pdfjs

我使用pdf.js渲染存储在服务器上的页面,从每个页面接收数据。但是如果使用循环来加载180页的Ajax请求,它会烧掉500 MB的内存。特别是,它们使用数学公式和图形占据渲染页面。一个准备好的预制版本总是吃大约100-200MB。为什么会这样呢?

这是页面呈现方法。获取文件并呈现单个页面,因为每个文件都被分成Pdf文件。

PDFJS.getDocument({
    data: atob(pageData)
}).then(function(pdf) {
    pdf.getPage(1).then(function(page) {
        var canvas = document.getElementById('page-' + pageNum);
        var context = canvas.getContext('2d');
        var viewport = page.getViewport(settings.scale);
        canvas.height = viewport.height;
        canvas.width = viewport.width;

        var canvasP = document.getElementById('preview-page-' + pageNum);
        var contextP = canvasP.getContext('2d');
        var viewportP = page.getViewport(settings.previewScale);
        canvasP.height = viewportP.height;
        canvasP.width = viewportP.width;

        page.render({
            canvasContext: context,
            viewport: viewport
        }).then(function() {
            pdf.cleanup();
            pdf.destroy();
            page.cleanup();
            render.pagesStatus[pageNum] = pageRenderStatus.S;
        });
    });
}, function (reason) {
    render.pagesStatus[pageNum] = pageRenderStatus.E;
    console.error(reason);
});

0 个答案:

没有答案