gpt4 book ai didi

javascript - 查看器.js/pdf.js : Memory usage increases every time a pdf is rendered

转载 作者:行者123 更新时间:2023-12-03 23:15:43 28 4
gpt4 key购买 nike

我的问题是,每次使用 viewer.js 渲染 pdf 文件时,我的应用程序的内存使用量都会增加。

我以这种方式呈现我的pdf:

container = document.getElementById('viewerContainer');
viewer = document.getElementById('viewer');

pdfViewer = new PDFViewer({
container: container,
viewer: viewer
});

$scope.pdfFindController = new PDFFindController({
pdfViewer: pdfViewer
});

pdfViewer.setFindController($scope.pdfFindController);

container.addEventListener('pagesinit', function () {
pdfViewer.currentScaleValue = 'page-width';
});

PDFJS.getDocument($scope.getPageLink(pdf)).then(function (pdfDocument) {
documentPdf = pdfDocument;
pdfViewer.setDocument(pdfDocument);
});

我在单独的 View 中渲染文件。当我返回之前的 View 并打开另一个文件时,内存使用量增加了约 20MB。

我试过这个:
documentPdf.destroy();

现在,内存使用量减少了一点,但没有以前分配的那么多。

有解决方案吗?

更新 :

pdf.js 版本:1.6.210

pdf.js worker 版本:1.6.210

最佳答案

您需要在 DocumentPageProxy 的 promise 上调用 destroy 方法。
该文档将其描述如下:

Destroys current document instance and terminates worker.

Source: https://github.com/mozilla/pdf.js/blob/master/src/display/api.js (Line 621)


当前 pdf.js中有一些测试库,用于测试 destroy 方法的行为。 ( https://github.com/mozilla/pdf.js/blob/master/test/unit/api_spec.js (第 86 行)
在您的情况下,例如:
 // a variable to store the callback function
var loadingTask = PDFJS.getDocument(basicApiUrl);

...

// when the document should get destroyed call
loadingTask.destroy();

关于javascript - 查看器.js/pdf.js : Memory usage increases every time a pdf is rendered,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40890212/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com