From 203f51f59aa54a86140fd685289ca251ac2e567d Mon Sep 17 00:00:00 2001 From: Aras Abbasi Date: Tue, 18 Dec 2018 15:05:16 +0100 Subject: [PATCH 1/3] Update jspdf.js --- src/jspdf.js | 71 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 23 deletions(-) diff --git a/src/jspdf.js b/src/jspdf.js index 8f1ac5337..b0f3c26ef 100644 --- a/src/jspdf.js +++ b/src/jspdf.js @@ -813,21 +813,37 @@ var jsPDF = (function (global) { }; var putPage = API.__private__.putPage = function (page) { - var dimensions = page.dimensions; + var mediaBox = page.mediaBox; var pageNumber = page.number; var data = page.data; var pageObjectNumber = page.objId; var pageContentsObjId = page.contentsObjId; newObjectDeferredBegin(pageObjectNumber, true); - var wPt = dimensions.width; - var hPt = dimensions.height; + var wPt = pagesContext[currentPage].mediaBox.topRightX - pagesContext[currentPage].mediaBox.bottomLeftX; + var hPt = pagesContext[currentPage].mediaBox.topRightY - pagesContext[currentPage].mediaBox.bottomLeftY; out('< 0 && n <= page) { currentPage = n; - pagesContext[currentPage].dimensions.width; - pagesContext[currentPage].dimensions.height; } }; @@ -2782,7 +2807,7 @@ var jsPDF = (function (global) { }; var getVerticalCoordinate = API.__private__.getVerticalCoordinate = function (value) { - return pagesContext[currentPage].dimensions.height - (value * k); + return pagesContext[currentPage].mediaBox.topRightY - pagesContext[currentPage].mediaBox.bottomLeftY - (value * k); }; var getHorizontalCoordinateString = API.__private__.getHorizontalCoordinateString = function (value) { @@ -2790,7 +2815,7 @@ var jsPDF = (function (global) { }; var getVerticalCoordinateString = API.__private__.getVerticalCoordinateString = function (value) { - return f2(pagesContext[currentPage].dimensions.height - (value * k)); + return f2(pagesContext[currentPage].mediaBox.topRightY - pagesContext[currentPage].mediaBox.bottomLeftY - (value * k)); }; var strokeColor = options.strokeColor || '0 G'; @@ -3212,16 +3237,16 @@ var jsPDF = (function (global) { 'scaleFactor': k, 'pageSize': { getWidth: function () { - return pagesContext[currentPage].dimensions.width / k; + return (pagesContext[currentPage].mediaBox.topRightX - pagesContext[currentPage].mediaBox.bottomLeftX) / k; }, setWidth: function (value) { - pagesContext[currentPage].dimensions.width = value * k; + pagesContext[currentPage].mediaBox.topRightX = (value * k) + pagesContext[currentPage].mediaBox.bottomLeftX; }, getHeight: function () { - return pagesContext[currentPage].dimensions.height / k; + return (pagesContext[currentPage].mediaBox.topRightY - pagesContext[currentPage].mediaBox.bottomLeftY) / k; }, setHeight: function (value) { - pagesContext[currentPage].dimensions.height = value * k; + pagesContext[currentPage].mediaBox.topRightY = (value * k) + pagesContext[currentPage].mediaBox.bottomLeftY; }, }, 'output': output, @@ -3239,20 +3264,20 @@ var jsPDF = (function (global) { Object.defineProperty(API.internal.pageSize, 'width', { get: function () { - return pagesContext[currentPage].dimensions.width / k; + return (pagesContext[currentPage].mediaBox.topRightX - pagesContext[currentPage].mediaBox.bottomLeftX) / k; }, set: function (value) { - pagesContext[currentPage].dimensions.width = value * k; + pagesContext[currentPage].mediaBox.topRightX = (value * k) + pagesContext[currentPage].mediaBox.bottomLeftX; }, enumerable: true, configurable: true }); Object.defineProperty(API.internal.pageSize, 'height', { get: function () { - return pagesContext[currentPage].dimensions.height / k; + return (pagesContext[currentPage].mediaBox.topRightY - pagesContext[currentPage].mediaBox.bottomLeftY) / k; }, set: function (value) { - pagesContext[currentPage].dimensions.height = value * k; + pagesContext[currentPage].mediaBox.topRightY = (value * k) + pagesContext[currentPage].mediaBox.bottomLeftY; }, enumerable: true, configurable: true From 61c79f7a968a4384d266ad6c73986cc0d72b755d Mon Sep 17 00:00:00 2001 From: Aras Abbasi Date: Tue, 18 Dec 2018 22:27:15 +0100 Subject: [PATCH 2/3] Update jspdf.js --- src/jspdf.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/jspdf.js b/src/jspdf.js index b0f3c26ef..391043ca4 100644 --- a/src/jspdf.js +++ b/src/jspdf.js @@ -1304,7 +1304,7 @@ var jsPDF = (function (global) { } }; - var getNumberOfPages = API.__private__.getNumberOfPages = function () { + var getNumberOfPages = API.__private__.getNumberOfPages = API.getNumberOfPages = function () { return pages.length - 1; } /** @@ -1612,7 +1612,7 @@ var jsPDF = (function (global) { //--------------------------------------- // Public API - + var getPageInfo = API.__private__.getPageInfo = function (pageNumberOneBased) { if (isNaN(pageNumberOneBased) || (pageNumberOneBased % 1 !== 0)) { throw new Error('Invalid argument passed to jsPDF.getPageInfo'); @@ -1624,7 +1624,7 @@ var jsPDF = (function (global) { pageContext: pagesContext[pageNumberOneBased] }; }; - + var getPageInfoByObjId = API.__private__.getPageInfoByObjId = function (objId) { var pageNumberWithObjId; for (var pageNumber in pagesContext) { From 8be7f65fdf98b8d8699bf6710df63ecc7dd66e3e Mon Sep 17 00:00:00 2001 From: Aras Abbasi Date: Wed, 19 Dec 2018 12:55:43 +0100 Subject: [PATCH 3/3] Update jspdf.unit.spec.js --- tests/init/jspdf.unit.spec.js | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/tests/init/jspdf.unit.spec.js b/tests/init/jspdf.unit.spec.js index a9bc33167..fc7b021da 100644 --- a/tests/init/jspdf.unit.spec.js +++ b/tests/init/jspdf.unit.spec.js @@ -319,32 +319,19 @@ describe('jsPDF unit tests', () => { const doc = jsPDF() doc.addPage(); doc.addPage(); - expect(doc.internal.getPageInfo(1)).toEqual({ objId: 0, pageNumber: 1, pageContext: {dimensions: { width: 595.28, height: 841.89, userUnit: 1.0 }, objId: 0, contentsObjId: 0, annotations: []} }); - expect(doc.internal.getPageInfo(2)).toEqual({ objId: 0, pageNumber: 2, pageContext: {dimensions: { width: 595.28, height: 841.89, userUnit: 1.0 }, objId: 0, contentsObjId: 0, annotations: []} }); - expect(doc.internal.getPageInfo(3)).toEqual({ objId: 0, pageNumber: 3, pageContext: {dimensions: { width: 595.28, height: 841.89, userUnit: 1.0 }, objId: 0, contentsObjId: 0, annotations: []} }); + expect(doc.internal.getPageInfo(1)).toEqual({ objId: 0, pageNumber: 1, pageContext: {mediaBox: { bottomLeftX: 0, bottomLeftY: 0, topRightX: 595.28, topRightY: 841.89 }, artBox: null, bleedBox: null, cropBox: null, trimBox: null, userUnit: 1.0, objId: 0, contentsObjId: 0, annotations: []} }); + expect(doc.internal.getPageInfo(2)).toEqual({ objId: 0, pageNumber: 2, pageContext: {mediaBox: { bottomLeftX: 0, bottomLeftY: 0, topRightX: 595.28, topRightY: 841.89 }, artBox: null, bleedBox: null, cropBox: null, trimBox: null, userUnit: 1.0, objId: 0, contentsObjId: 0, annotations: []} }); + expect(doc.internal.getPageInfo(3)).toEqual({ objId: 0, pageNumber: 3, pageContext: {mediaBox: { bottomLeftX: 0, bottomLeftY: 0, topRightX: 595.28, topRightY: 841.89 }, artBox: null, bleedBox: null, cropBox: null, trimBox: null, userUnit: 1.0, objId: 0, contentsObjId: 0, annotations: []} }); expect(function() {doc.internal.getPageInfo('invalid');}).toThrow(new Error('Invalid argument passed to jsPDF.getPageInfo')); expect(function() {doc.internal.getPageInfo(3.14);}).toThrow(new Error('Invalid argument passed to jsPDF.getPageInfo')); }); - - - it('jsPDF private function getPageInfo', () => { - const doc = jsPDF() - doc.addPage(); - doc.addPage(); - expect(doc.__private__.getPageInfo(1)).toEqual({ objId: 0, pageNumber: 1, pageContext: {dimensions: { width: 595.28, height: 841.89, userUnit: 1.0 }, objId: 0, contentsObjId: 0, annotations: []} }); - expect(doc.__private__.getPageInfo(2)).toEqual({ objId: 0, pageNumber: 2, pageContext: {dimensions: { width: 595.28, height: 841.89, userUnit: 1.0 }, objId: 0, contentsObjId: 0, annotations: []} }); - expect(doc.__private__.getPageInfo(3)).toEqual({ objId: 0, pageNumber: 3, pageContext: {dimensions: { width: 595.28, height: 841.89, userUnit: 1.0 }, objId: 0, contentsObjId: 0, annotations: []} }); - - expect(function() {doc.__private__.getPageInfo('invalid');}).toThrow(new Error('Invalid argument passed to jsPDF.getPageInfo')); - expect(function() {doc.__private__.getPageInfo(3.14);}).toThrow(new Error('Invalid argument passed to jsPDF.getPageInfo')); - }); - + it('jsPDF private function getCurrentPageInfo', () => { const doc = jsPDF() doc.addPage(); doc.addPage(); - expect(doc.__private__.getCurrentPageInfo()).toEqual({ objId: 0, pageNumber: 3, pageContext: {dimensions: { width: 595.28, height: 841.89, userUnit: 1.0 }, objId: 0, contentsObjId: 0, annotations: []} }); + expect(doc.__private__.getCurrentPageInfo()).toEqual({ objId: 0, pageNumber: 3, pageContext: {mediaBox: { bottomLeftX: 0, bottomLeftY: 0, topRightX: 595.28, topRightY: 841.89 }, artBox: null, bleedBox: null, cropBox: null, trimBox: null, userUnit: 1.0, objId: 0, contentsObjId: 0, annotations: []} }); }); it('jsPDF private function getArrayBuffer', () => { @@ -1411,7 +1398,7 @@ break`, 10, 10, {scope: doc}); doc = jsPDF(); writeArray = []; doc.__private__.setCustomOutputDestination(writeArray); - doc.__private__.putPage({number: 1, data:['streamData'], dimensions: {width: 595.28, height: 841.89}, resourceDictionaryObjId: 2, rootDictionaryObjId: 1, objId: 3, contentsObjId: 4}); + doc.__private__.putPage({number: 1, data:['streamData'], mediaBox: { bottomLeftX: 0, bottomLeftY: 0, topRightX: 595.28, topRightY: 841.89 }, artBox: null, bleedBox: null, cropBox: null, trimBox: null, userUnit: 1.0, resourceDictionaryObjId: 2, rootDictionaryObjId: 1, objId: 3, contentsObjId: 4}); expect(writeArray).toEqual(["3 0 obj","<>","endobj","4 0 obj","<<","/Length 10",">>","stream","streamData","endstream","endobj"]); })