我使用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);
});