Browse Source

Fixes incomplete restore in paintFormXObject

Yury Delendik 13 years ago
parent
commit
4c533d065d
  1. 7
      src/canvas.js
  2. 1
      test/pdfs/.gitignore
  3. BIN
      test/pdfs/issue1905.pdf
  4. 6
      test/test_manifest.json

7
src/canvas.js

@ -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() {
var depth = this.current.paintFormXObjectDepth;
do {
this.restore(); 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) {

1
test/pdfs/.gitignore vendored

@ -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

Binary file not shown.

6
test/test_manifest.json

@ -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",

Loading…
Cancel
Save