12
12
13
13
/** @preserve
14
14
* 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
17
17
*
18
18
* Copyright (c) 2010-2014 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
19
19
* 2010 Aaron Spike, https://github.com/acspike
2026
2026
* pdfdoc.mymethod() // <- !!!!!!
2027
2027
*/
2028
2028
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";
2030
2030
2031
2031
if (typeof define === 'function' && define.amd) {
2032
2032
define('jsPDF', function () {
@@ -3862,7 +3862,7 @@ Q\n";
3862
3862
3863
3863
// Soft mask
3864
3864
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'];
3866
3866
var smask = { 'w': img['w'], 'h': img['h'], 'cs': 'DeviceGray', 'bpc': img['bpc'], 'dp': dp, 'data': img['smask'] };
3867
3867
if ('f' in img) smask.f = img['f'];
3868
3868
putImage.call(this, smask);
@@ -4178,10 +4178,10 @@ Q\n";
4178
4178
* Async method using Blob and FileReader could be best, but i'm not sure how to fit it into the flow?
4179
4179
*/
4180
4180
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
+ }*/
4185
4185
4186
4186
if (this.isArrayBuffer(buffer)) buffer = new Uint8Array(buffer);
4187
4187
@@ -4259,7 +4259,7 @@ Q\n";
4259
4259
return base64;
4260
4260
};
4261
4261
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 ) {
4263
4263
var info = {
4264
4264
alias: alias,
4265
4265
w: wd,
@@ -4276,6 +4276,7 @@ Q\n";
4276
4276
if (trns) info.trns = trns;
4277
4277
if (pal) info.pal = pal;
4278
4278
if (smask) info.smask = smask;
4279
+ if (p) info.p = p; // predictor parameter for PNG compression
4279
4280
4280
4281
return info;
4281
4282
};
@@ -7145,9 +7146,9 @@ Q\n";
7145
7146
value = listCount++ + '. ' + value;
7146
7147
} else {
7147
7148
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;
7151
7152
cb = function cb(x, y) {
7152
7153
this.pdf.circle(x + offsetX, y + offsetY, radius, 'FD');
7153
7154
};
@@ -8265,6 +8266,23 @@ Q\n";
8265
8266
while (i < len) {
8266
8267
sum += Math.abs(array[i++]);
8267
8268
}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;
8268
8286
},
8269
8287
logImg = function logImg(img) {
8270
8288
console.log("width: " + img.width);
@@ -8446,15 +8464,17 @@ Q\n";
8446
8464
}
8447
8465
}
8448
8466
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
8450
8470
//remove 'Predictor' as it applies to the type of png filter applied to its IDAT - we only apply with compression
8451
8471
dp = '/Colors ' + colors + ' /BitsPerComponent ' + bpc + ' /Columns ' + img.width;
8452
8472
8453
8473
if (this.isArrayBuffer(imageData) || this.isArrayBufferView(imageData)) imageData = this.arrayBufferToBinaryString(imageData);
8454
8474
8455
8475
if (smask && this.isArrayBuffer(smask) || this.isArrayBufferView(smask)) smask = this.arrayBufferToBinaryString(smask);
8456
8476
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 );
8458
8478
}
8459
8479
8460
8480
throw new Error("Unsupported PNG image data, try using JPEG instead.");
0 commit comments