1212
1313 /** @preserve
1414 * jsPDF - PDF Document creation from JavaScript
15- * Version 1.2.61 Built on 2016-09-25T22:32:35.622Z
16- * CommitID 33aab1469e
15+ * Version 1.2.61 Built on 2016-09-26T11:22:48.682Z
16+ * CommitID bd60b2f4b9
1717 *
1818 * Copyright (c) 2010-2014 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
1919 * 2010 Aaron Spike, https://github.com/acspike
20262026 * pdfdoc.mymethod() // <- !!!!!!
20272027 */
20282028 jsPDF.API = { events: [] };
2029- jsPDF.version = "1.2.61 2016-09-25T22:32:35.622Z :jameshall";
2029+ jsPDF.version = "1.2.61 2016-09-26T11:22:48.682Z :jameshall";
20302030
20312031 if (typeof define === 'function' && define.amd) {
20322032 define('jsPDF', function () {
@@ -3862,7 +3862,7 @@ Q\n";
38623862
38633863 // Soft mask
38643864 if ('smask' in img) {
3865- var dp = '/Predictor 15 /Colors 1 /BitsPerComponent ' + img['bpc'] + ' /Columns ' + img['w'];
3865+ var dp = '/Predictor ' + img['p'] + ' /Colors 1 /BitsPerComponent ' + img['bpc'] + ' /Columns ' + img['w'];
38663866 var smask = { 'w': img['w'], 'h': img['h'], 'cs': 'DeviceGray', 'bpc': img['bpc'], 'dp': dp, 'data': img['smask'] };
38673867 if ('f' in img) smask.f = img['f'];
38683868 putImage.call(this, smask);
@@ -4178,10 +4178,10 @@ Q\n";
41784178 * Async method using Blob and FileReader could be best, but i'm not sure how to fit it into the flow?
41794179 */
41804180 jsPDFAPI.arrayBufferToBinaryString = function (buffer) {
4181- if ('TextDecoder' in window) {
4182- var decoder = new TextDecoder('ascii');
4183- return decoder.decode(buffer);
4184- }
4181+ /*if ('TextDecoder' in window){
4182+ var decoder = new TextDecoder('ascii');
4183+ return decoder.decode(buffer);
4184+ }*/
41854185
41864186 if (this.isArrayBuffer(buffer)) buffer = new Uint8Array(buffer);
41874187
@@ -4259,7 +4259,7 @@ Q\n";
42594259 return base64;
42604260 };
42614261
4262- jsPDFAPI.createImageInfo = function (data, wd, ht, cs, bpc, f, imageIndex, alias, dp, trns, pal, smask) {
4262+ jsPDFAPI.createImageInfo = function (data, wd, ht, cs, bpc, f, imageIndex, alias, dp, trns, pal, smask, p ) {
42634263 var info = {
42644264 alias: alias,
42654265 w: wd,
@@ -4276,6 +4276,7 @@ Q\n";
42764276 if (trns) info.trns = trns;
42774277 if (pal) info.pal = pal;
42784278 if (smask) info.smask = smask;
4279+ if (p) info.p = p; // predictor parameter for PNG compression
42794280
42804281 return info;
42814282 };
@@ -7145,9 +7146,9 @@ Q\n";
71457146 value = listCount++ + '. ' + value;
71467147 } else {
71477148 var fontSize = fragmentCSS["font-size"];
7148- offsetX = (3 - fontSize * 0.75) * renderer.pdf.internal.scaleFactor;
7149- offsetY = fontSize * 0.75 * renderer.pdf.internal.scaleFactor;
7150- radius = fontSize * 1.74 / renderer.pdf.internal.scaleFactor;
7149+ var offsetX = (3 - fontSize * 0.75) * renderer.pdf.internal.scaleFactor;
7150+ var offsetY = fontSize * 0.75 * renderer.pdf.internal.scaleFactor;
7151+ var radius = fontSize * 1.74 / renderer.pdf.internal.scaleFactor;
71517152 cb = function cb(x, y) {
71527153 this.pdf.circle(x + offsetX, y + offsetY, radius, 'FD');
71537154 };
@@ -8265,6 +8266,23 @@ Q\n";
82658266 while (i < len) {
82668267 sum += Math.abs(array[i++]);
82678268 }return sum;
8269+ },
8270+ getPredictorFromCompression = function getPredictorFromCompression(compression) {
8271+ var predictor;
8272+ switch (compression) {
8273+ case jsPDFAPI.image_compression.FAST:
8274+ predictor = 11;
8275+ break;
8276+
8277+ case jsPDFAPI.image_compression.MEDIUM:
8278+ predictor = 13;
8279+ break;
8280+
8281+ case jsPDFAPI.image_compression.SLOW:
8282+ predictor = 14;
8283+ break;
8284+ }
8285+ return predictor;
82688286 },
82698287 logImg = function logImg(img) {
82708288 console.log("width: " + img.width);
@@ -8446,15 +8464,17 @@ Q\n";
84468464 }
84478465 }
84488466
8449- if (decode === this.decode.FLATE_DECODE) dp = '/Predictor 15 /Colors ' + colors + ' /BitsPerComponent ' + bpc + ' /Columns ' + img.width;else
8467+ var predictor = getPredictorFromCompression(compression);
8468+
8469+ if (decode === this.decode.FLATE_DECODE) dp = '/Predictor ' + predictor + ' /Colors ' + colors + ' /BitsPerComponent ' + bpc + ' /Columns ' + img.width;else
84508470 //remove 'Predictor' as it applies to the type of png filter applied to its IDAT - we only apply with compression
84518471 dp = '/Colors ' + colors + ' /BitsPerComponent ' + bpc + ' /Columns ' + img.width;
84528472
84538473 if (this.isArrayBuffer(imageData) || this.isArrayBufferView(imageData)) imageData = this.arrayBufferToBinaryString(imageData);
84548474
84558475 if (smask && this.isArrayBuffer(smask) || this.isArrayBufferView(smask)) smask = this.arrayBufferToBinaryString(smask);
84568476
8457- return this.createImageInfo(imageData, img.width, img.height, colorSpace, bpc, decode, imageIndex, alias, dp, trns, pal, smask);
8477+ return this.createImageInfo(imageData, img.width, img.height, colorSpace, bpc, decode, imageIndex, alias, dp, trns, pal, smask, predictor );
84588478 }
84598479
84608480 throw new Error("Unsupported PNG image data, try using JPEG instead.");
0 commit comments