내 문제는 viewer.js를 사용하여 pdf 파일을 렌더링 할 때마다 내 응용 프로그램의 메모리 사용량이 증가한다는 것입니다.viewer.js/pdf.js : 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);
});
내가 별도의 뷰에서 파일을 렌더링 :
나는 내 PDF 이런 식으로 렌더링합니다. 이전 뷰로 돌아가서 다른 파일을 열면 메모리 사용량이 ~ 20MB 증가합니다.
나는이 시도 :documentPdf.destroy();
지금, 메모리 사용량이 약간 감소하지만, 이전에 할당 된없는만큼.
해결 방법은 있습니까?
UPDATE :
Pdf.js 버전 : 1.6.210
pdf.js 작업자 버전 : 1.6.210
가비지 콜렉션 (일부 브라우저) 그렇게 자신의 도구를 통해 GC에 강제로 실행 한 후 메모리를 측정해야합니다 그것은 권장 동일한 PDFWorker를 사용하려면 동일한 페이지에서 여러 문서를 사용하려고합니다 .'documentPdf.destroy();는 올바른 단계입니다.setDocument에 대해 동일한 pdfViewer를 다시 사용하지 않는 경우 pdfFindController를 포함하여 이전 참조로 모든 참조를 정리해야합니다. – async5
pdfjs 프로젝트에서 사용할 수있는 angularjs 패키지가 없습니다. 완전한 예제가 제공되지 않았거나 사용 된 패키지 (공급 업체)가 언급되지 않은 경우 말하거나 재현하기가 어렵습니다. – async5
Xcode를 사용하여 메모리 사용량을 봅니다. 내가 iOS 용으로 제작 했으니 까. PDFWorker는 동일해야합니다. 난 단지 매번'PDFJS.workerSrc = 'lib/pdfviewer/pdf.worker.js';'라는 참조를 설정했다. Giovazz89와 같은 변수를 삭제하고 설정하는 것이 좋습니다. viewer.js /pdf.js에 여전히 참조가있을 수 있습니까? 사실, 그것들은 덮어 써 져야하고 그 파일에있는 문서도 파괴합니다. 하나의 파일에서 모든 변수를 지울 수 있습니까? –