Fixes incomplete restore in paintFormXObject

This commit is contained in:
Yury Delendik 2012-10-26 23:30:01 -05:00
parent d2c1868497
commit 4c533d065d
4 changed files with 15 additions and 1 deletions

View File

@ -187,6 +187,7 @@ var CanvasExtraState = (function CanvasExtraStateClosure() {
this.fillAlpha = 1; this.fillAlpha = 1;
this.strokeAlpha = 1; this.strokeAlpha = 1;
this.lineWidth = 1; this.lineWidth = 1;
this.paintFormXObjectDepth = 0;
this.old = old; this.old = old;
} }
@ -1102,6 +1103,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix,
bbox) { bbox) {
this.save(); this.save();
this.current.paintFormXObjectDepth++;
if (matrix && isArray(matrix) && 6 == matrix.length) if (matrix && isArray(matrix) && 6 == matrix.length)
this.transform.apply(this, matrix); this.transform.apply(this, matrix);
@ -1116,7 +1118,12 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
}, },
paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() { paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {
this.restore(); var depth = this.current.paintFormXObjectDepth;
do {
this.restore();
// some pdf don't close all restores inside object
// closing those for them
} while (this.current.paintFormXObjectDepth >= depth);
}, },
paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) { paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {

View File

@ -24,6 +24,7 @@
!pdfkit_compressed.pdf !pdfkit_compressed.pdf
!TAMReview.pdf !TAMReview.pdf
!issue918.pdf !issue918.pdf
!issue1905.pdf
!issue1249.pdf !issue1249.pdf
!smaskdim.pdf !smaskdim.pdf
!type4psfunc.pdf !type4psfunc.pdf

BIN
test/pdfs/issue1905.pdf Normal file

Binary file not shown.

View File

@ -367,6 +367,12 @@
"pageLimit": 3, "pageLimit": 3,
"type": "eq" "type": "eq"
}, },
{ "id": "issue1905",
"file": "pdfs/issue1905.pdf",
"md5": "b1bbd72ca6522ae1502aa26320f81994",
"rounds": 1,
"type": "eq"
},
{ "id": "issue918", { "id": "issue918",
"file": "pdfs/issue918.pdf", "file": "pdfs/issue918.pdf",
"md5": "d582cc0f2592ae82936589ced2a47e55", "md5": "d582cc0f2592ae82936589ced2a47e55",