|
@@ -972,7 +972,7 @@ var PDFPageView = (function PDFPageViewClosure() {
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
|
|
- reset: function PDFPageView_reset(keepAnnotations) {
|
|
|
|
|
|
+ reset: function PDFPageView_reset(keepZoomLayer, keepAnnotations) {
|
|
if (this.renderTask) {
|
|
if (this.renderTask) {
|
|
this.renderTask.cancel();
|
|
this.renderTask.cancel();
|
|
}
|
|
}
|
|
@@ -984,12 +984,12 @@ var PDFPageView = (function PDFPageViewClosure() {
|
|
div.style.height = Math.floor(this.viewport.height) + 'px';
|
|
div.style.height = Math.floor(this.viewport.height) + 'px';
|
|
|
|
|
|
var childNodes = div.childNodes;
|
|
var childNodes = div.childNodes;
|
|
- var currentZoomLayer = this.zoomLayer || null;
|
|
|
|
|
|
+ var currentZoomLayerNode = (keepZoomLayer && this.zoomLayer) || null;
|
|
var currentAnnotationNode = (keepAnnotations && this.annotationLayer &&
|
|
var currentAnnotationNode = (keepAnnotations && this.annotationLayer &&
|
|
this.annotationLayer.div) || null;
|
|
this.annotationLayer.div) || null;
|
|
for (var i = childNodes.length - 1; i >= 0; i--) {
|
|
for (var i = childNodes.length - 1; i >= 0; i--) {
|
|
var node = childNodes[i];
|
|
var node = childNodes[i];
|
|
- if (currentZoomLayer === node || currentAnnotationNode === node) {
|
|
|
|
|
|
+ if (currentZoomLayerNode === node || currentAnnotationNode === node) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
div.removeChild(node);
|
|
div.removeChild(node);
|
|
@@ -1006,7 +1006,7 @@ var PDFPageView = (function PDFPageViewClosure() {
|
|
this.annotationLayer = null;
|
|
this.annotationLayer = null;
|
|
}
|
|
}
|
|
|
|
|
|
- if (this.canvas) {
|
|
|
|
|
|
+ if (this.canvas && !currentZoomLayerNode) {
|
|
// Zeroing the width and height causes Firefox to release graphics
|
|
// Zeroing the width and height causes Firefox to release graphics
|
|
// resources immediately, which can greatly reduce memory consumption.
|
|
// resources immediately, which can greatly reduce memory consumption.
|
|
this.canvas.width = 0;
|
|
this.canvas.width = 0;
|
|
@@ -1045,19 +1045,21 @@ var PDFPageView = (function PDFPageViewClosure() {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- if (this.canvas &&
|
|
|
|
- (PDFJS.useOnlyCssZoom ||
|
|
|
|
- (this.hasRestrictedScaling && isScalingRestricted))) {
|
|
|
|
- this.cssTransform(this.canvas, true);
|
|
|
|
- return;
|
|
|
|
- } else if (this.canvas && !this.zoomLayer) {
|
|
|
|
- this.zoomLayer = this.canvas.parentNode;
|
|
|
|
- this.zoomLayer.style.position = 'absolute';
|
|
|
|
|
|
+ if (this.canvas) {
|
|
|
|
+ if (PDFJS.useOnlyCssZoom ||
|
|
|
|
+ (this.hasRestrictedScaling && isScalingRestricted)) {
|
|
|
|
+ this.cssTransform(this.canvas, true);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (!this.zoomLayer) {
|
|
|
|
+ this.zoomLayer = this.canvas.parentNode;
|
|
|
|
+ this.zoomLayer.style.position = 'absolute';
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if (this.zoomLayer) {
|
|
if (this.zoomLayer) {
|
|
this.cssTransform(this.zoomLayer.firstChild);
|
|
this.cssTransform(this.zoomLayer.firstChild);
|
|
}
|
|
}
|
|
- this.reset(true);
|
|
|
|
|
|
+ this.reset(/* keepZoomLayer = */ true, /* keepAnnotations = */ true);
|
|
},
|
|
},
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -1266,6 +1268,12 @@ var PDFPageView = (function PDFPageViewClosure() {
|
|
}
|
|
}
|
|
|
|
|
|
if (self.zoomLayer) {
|
|
if (self.zoomLayer) {
|
|
|
|
+ // Zeroing the width and height causes Firefox to release graphics
|
|
|
|
+ // resources immediately, which can greatly reduce memory consumption.
|
|
|
|
+ var zoomLayerCanvas = self.zoomLayer.firstChild;
|
|
|
|
+ zoomLayerCanvas.width = 0;
|
|
|
|
+ zoomLayerCanvas.height = 0;
|
|
|
|
+
|
|
div.removeChild(self.zoomLayer);
|
|
div.removeChild(self.zoomLayer);
|
|
self.zoomLayer = null;
|
|
self.zoomLayer = null;
|
|
}
|
|
}
|