我的問題是每次使用viewer.js渲染pdf文件時,我的應用程序的內存使用率都會增加。viewer.js/pdf.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);
});
我呈現在一個單獨的視圖文件。當我回到以前的視圖並打開另一個文件時,內存使用量增加了20MB左右。
我嘗試這樣做:
documentPdf.destroy();
現在,內存使用量下降了一點,但並不像它之前分配。
有沒有解決方案呢?
UPDATE:
Pdf.js版本:1.6.210
pdf.js工人版本:1.6.210
確保你衡量內存後垃圾回收已運行(某些瀏覽器可以通過他們的工具強制GC做到這一點),它的建議要使用相同的PDFWorker,您正在嘗試在同一頁面上使用多個文檔:'documentPdf.destroy();'是正確的一步。如果您不重複使用相同的pdfViewer作爲setDocument,請確保清除所有包含pdfFindController的舊文件。 – async5
pdfjs項目中沒有可用的angularjs包。如果沒有提供完整的示例或提及使用的包(供應商),則很難說明或重現。 – async5
我使用Xcode查看內存使用情況。因爲我爲iOS構建它。 PDFWorker應該是相同的。我只是每次設置參考PDFJS.workerSrc ='lib/pdfviewer/pdf.worker.js';'。我刪除並設置像Giovazz89推薦的變量。難道那個viewer.js /pdf.js仍然有一些參考?實際上,它們應該被覆蓋,並且我也摧毀了該文件中的文檔。是否可以清除一個文件中的所有變量? –