@adnsistemas/pdf-lib 2.6.4 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -0
- package/cjs/api/PDFDocument.d.ts +22 -0
- package/cjs/api/PDFDocument.d.ts.map +1 -1
- package/cjs/api/PDFDocument.js +45 -0
- package/cjs/api/PDFDocument.js.map +1 -1
- package/cjs/api/PDFFont.d.ts +1 -1
- package/cjs/api/PDFFont.d.ts.map +1 -1
- package/cjs/api/PDFFont.js +3 -5
- package/cjs/api/PDFFont.js.map +1 -1
- package/cjs/core/PDFContext.d.ts +2 -0
- package/cjs/core/PDFContext.d.ts.map +1 -1
- package/cjs/core/PDFContext.js +43 -2
- package/cjs/core/PDFContext.js.map +1 -1
- package/cjs/core/objects/PDFArray.d.ts +1 -0
- package/cjs/core/objects/PDFArray.d.ts.map +1 -1
- package/cjs/core/objects/PDFArray.js +7 -0
- package/cjs/core/objects/PDFArray.js.map +1 -1
- package/cjs/core/objects/PDFRawStream.d.ts.map +1 -1
- package/cjs/core/objects/PDFRawStream.js +1 -0
- package/cjs/core/objects/PDFRawStream.js.map +1 -1
- package/cjs/utils/png.js +1 -1
- package/cjs/utils/png.js.map +1 -1
- package/dist/pdf-lib.esm.js +224 -45
- package/dist/pdf-lib.esm.js.map +1 -1
- package/dist/pdf-lib.esm.min.js +3 -3
- package/dist/pdf-lib.esm.min.js.map +1 -1
- package/dist/pdf-lib.js +224 -45
- package/dist/pdf-lib.js.map +1 -1
- package/dist/pdf-lib.min.js +2 -2
- package/dist/pdf-lib.min.js.map +1 -1
- package/es/api/PDFDocument.d.ts +22 -0
- package/es/api/PDFDocument.d.ts.map +1 -1
- package/es/api/PDFDocument.js +45 -0
- package/es/api/PDFDocument.js.map +1 -1
- package/es/api/PDFFont.d.ts +1 -1
- package/es/api/PDFFont.d.ts.map +1 -1
- package/es/api/PDFFont.js +3 -5
- package/es/api/PDFFont.js.map +1 -1
- package/es/core/PDFContext.d.ts +2 -0
- package/es/core/PDFContext.d.ts.map +1 -1
- package/es/core/PDFContext.js +43 -2
- package/es/core/PDFContext.js.map +1 -1
- package/es/core/objects/PDFArray.d.ts +1 -0
- package/es/core/objects/PDFArray.d.ts.map +1 -1
- package/es/core/objects/PDFArray.js +7 -0
- package/es/core/objects/PDFArray.js.map +1 -1
- package/es/core/objects/PDFRawStream.d.ts.map +1 -1
- package/es/core/objects/PDFRawStream.js +1 -0
- package/es/core/objects/PDFRawStream.js.map +1 -1
- package/es/utils/png.js +1 -1
- package/es/utils/png.js.map +1 -1
- package/package.json +4 -3
- package/src/api/PDFDocument.ts +60 -0
- package/src/api/PDFFont.ts +3 -5
- package/src/core/PDFContext.ts +42 -1
- package/src/core/objects/PDFArray.ts +8 -0
- package/src/core/objects/PDFRawStream.ts +1 -0
- package/src/utils/png.ts +1 -1
- package/ts3.4/cjs/api/PDFDocument.d.ts +22 -0
- package/ts3.4/cjs/api/PDFFont.d.ts +1 -1
- package/ts3.4/cjs/core/PDFContext.d.ts +2 -0
- package/ts3.4/cjs/core/objects/PDFArray.d.ts +1 -0
- package/ts3.4/es/api/PDFDocument.d.ts +22 -0
- package/ts3.4/es/api/PDFFont.d.ts +1 -1
- package/ts3.4/es/core/PDFContext.d.ts +2 -0
- package/ts3.4/es/core/objects/PDFArray.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PDFRawStream.d.ts","sourceRoot":"","sources":["../../../src/core/objects/PDFRawStream.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,UAAU,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,cAAM,YAAa,SAAQ,SAAS;IAClC,MAAM,CAAC,EAAE,SACD,OAAO,YACH,UAAU,cACR,eAAe,kBACoB;IAEjD,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IAErC,OAAO;IAUP,YAAY,IAAI,UAAU;IAI1B,KAAK,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,YAAY;IAIzC,iBAAiB,IAAI,MAAM;IAI3B,WAAW,IAAI,UAAU;IAIzB,eAAe,IAAI,MAAM;IAIzB,cAAc,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"PDFRawStream.d.ts","sourceRoot":"","sources":["../../../src/core/objects/PDFRawStream.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,UAAU,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,cAAM,YAAa,SAAQ,SAAS;IAClC,MAAM,CAAC,EAAE,SACD,OAAO,YACH,UAAU,cACR,eAAe,kBACoB;IAEjD,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IAErC,OAAO;IAUP,YAAY,IAAI,UAAU;IAI1B,KAAK,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,YAAY;IAIzC,iBAAiB,IAAI,MAAM;IAI3B,WAAW,IAAI,UAAU;IAIzB,eAAe,IAAI,MAAM;IAIzB,cAAc,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;CAI3C;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PDFRawStream.js","sourceRoot":"","sources":["../../../src/core/objects/PDFRawStream.ts"],"names":[],"mappings":";;;AACA,oEAAoC;AAEpC,uCAA4C;AAG5C,MAAM,YAAa,SAAQ,mBAAS;IAUlC,YACE,IAAa,EACb,QAAoB,EACpB,SAA2B;QAE3B,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAoB;QACxB,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,iBAAiB;QACf,OAAO,IAAA,qBAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,cAAc,CAAC,QAAoB;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;;
|
|
1
|
+
{"version":3,"file":"PDFRawStream.js","sourceRoot":"","sources":["../../../src/core/objects/PDFRawStream.ts"],"names":[],"mappings":";;;AACA,oEAAoC;AAEpC,uCAA4C;AAG5C,MAAM,YAAa,SAAQ,mBAAS;IAUlC,YACE,IAAa,EACb,QAAoB,EACpB,SAA2B;QAE3B,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAoB;QACxB,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,iBAAiB;QACf,OAAO,IAAA,qBAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,cAAc,CAAC,QAAoB;QACjC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;;AA1CM,eAAE,GAAG,CACV,IAAa,EACb,QAAoB,EACpB,SAA2B,EAC3B,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAyCnD,kBAAe,YAAY,CAAC"}
|
package/cjs/utils/png.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PNG = exports.PngType = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const upng_1 = tslib_1.__importDefault(require("@
|
|
5
|
+
const upng_1 = tslib_1.__importDefault(require("@adnsistemas/upng"));
|
|
6
6
|
const getImageType = (ctype) => {
|
|
7
7
|
if (ctype === 0)
|
|
8
8
|
return PngType.Greyscale;
|
package/cjs/utils/png.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/utils/png.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/utils/png.ts"],"names":[],"mappings":"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"}
|
package/dist/pdf-lib.esm.js
CHANGED
|
@@ -8335,9 +8335,11 @@ class PDFArray extends PDFObject {
|
|
|
8335
8335
|
return this.array.length;
|
|
8336
8336
|
}
|
|
8337
8337
|
push(object) {
|
|
8338
|
+
this.registerChange();
|
|
8338
8339
|
this.array.push(object);
|
|
8339
8340
|
}
|
|
8340
8341
|
insert(index, object) {
|
|
8342
|
+
this.registerChange();
|
|
8341
8343
|
this.array.splice(index, 0, object);
|
|
8342
8344
|
}
|
|
8343
8345
|
indexOf(object) {
|
|
@@ -8345,9 +8347,11 @@ class PDFArray extends PDFObject {
|
|
|
8345
8347
|
return index === -1 ? undefined : index;
|
|
8346
8348
|
}
|
|
8347
8349
|
remove(index) {
|
|
8350
|
+
this.registerChange();
|
|
8348
8351
|
this.array.splice(index, 1);
|
|
8349
8352
|
}
|
|
8350
8353
|
set(idx, object) {
|
|
8354
|
+
this.registerChange();
|
|
8351
8355
|
this.array[idx] = object;
|
|
8352
8356
|
}
|
|
8353
8357
|
get(index) {
|
|
@@ -8422,6 +8426,9 @@ class PDFArray extends PDFObject {
|
|
|
8422
8426
|
}
|
|
8423
8427
|
}
|
|
8424
8428
|
}
|
|
8429
|
+
registerChange() {
|
|
8430
|
+
this.context.registerObjectChange(this);
|
|
8431
|
+
}
|
|
8425
8432
|
}
|
|
8426
8433
|
PDFArray.withContext = (context) => new PDFArray(context);
|
|
8427
8434
|
|
|
@@ -8911,6 +8918,7 @@ class PDFRawStream extends PDFStream {
|
|
|
8911
8918
|
return this.contents.length;
|
|
8912
8919
|
}
|
|
8913
8920
|
updateContents(contents) {
|
|
8921
|
+
this.dict.registerChange();
|
|
8914
8922
|
this.contents = contents;
|
|
8915
8923
|
}
|
|
8916
8924
|
}
|
|
@@ -9527,8 +9535,49 @@ class PDFContext {
|
|
|
9527
9535
|
return `${prefix}-${Math.floor(this.rng.nextInt() * Math.pow(10, suffixLength))}`;
|
|
9528
9536
|
}
|
|
9529
9537
|
registerObjectChange(obj) {
|
|
9530
|
-
if (this.snapshot)
|
|
9531
|
-
|
|
9538
|
+
if (!this.snapshot)
|
|
9539
|
+
return;
|
|
9540
|
+
const ref = this.getObjectRef(obj);
|
|
9541
|
+
if (ref) {
|
|
9542
|
+
this.snapshot.markRefForSave(ref);
|
|
9543
|
+
return;
|
|
9544
|
+
}
|
|
9545
|
+
const containingRef = this.findContainingIndirectObject(obj);
|
|
9546
|
+
if (containingRef) {
|
|
9547
|
+
this.snapshot.markRefForSave(containingRef);
|
|
9548
|
+
}
|
|
9549
|
+
}
|
|
9550
|
+
findContainingIndirectObject(target) {
|
|
9551
|
+
const entries = Array.from(this.indirectObjects.entries());
|
|
9552
|
+
for (let idx = 0, len = entries.length; idx < len; idx++) {
|
|
9553
|
+
const [ref, object] = entries[idx];
|
|
9554
|
+
if (this.objectContains(object, target)) {
|
|
9555
|
+
return ref;
|
|
9556
|
+
}
|
|
9557
|
+
}
|
|
9558
|
+
return undefined;
|
|
9559
|
+
}
|
|
9560
|
+
objectContains(container, target) {
|
|
9561
|
+
if (container === target)
|
|
9562
|
+
return true;
|
|
9563
|
+
if (container instanceof PDFDict) {
|
|
9564
|
+
const values = container.values();
|
|
9565
|
+
for (let i = 0, len = values.length; i < len; i++) {
|
|
9566
|
+
if (this.objectContains(values[i], target))
|
|
9567
|
+
return true;
|
|
9568
|
+
}
|
|
9569
|
+
}
|
|
9570
|
+
else if (container instanceof PDFArray) {
|
|
9571
|
+
for (let i = 0, len = container.size(); i < len; i++) {
|
|
9572
|
+
if (this.objectContains(container.get(i), target))
|
|
9573
|
+
return true;
|
|
9574
|
+
}
|
|
9575
|
+
}
|
|
9576
|
+
else if (container instanceof PDFStream) {
|
|
9577
|
+
if (this.objectContains(container.dict, target))
|
|
9578
|
+
return true;
|
|
9579
|
+
}
|
|
9580
|
+
return false;
|
|
9532
9581
|
}
|
|
9533
9582
|
getObjectVersions(ref) {
|
|
9534
9583
|
if (!this.preserveObjectsVersions)
|
|
@@ -13325,7 +13374,7 @@ UPNG.toRGBA8.decodeImage = function(data, w, h, out)
|
|
|
13325
13374
|
else if(depth== 2) for(var x=0; x<w; x++) { var gr= 85*((data[off+(x>>>2)]>>>(6 -((x&3)<<1)))& 3), al=(gr==tr* 85)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
|
|
13326
13375
|
else if(depth== 4) for(var x=0; x<w; x++) { var gr= 17*((data[off+(x>>>1)]>>>(4 -((x&1)<<2)))&15), al=(gr==tr* 17)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
|
|
13327
13376
|
else if(depth== 8) for(var x=0; x<w; x++) { var gr=data[off+ x], al=(gr ==tr)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
|
|
13328
|
-
else if(depth==16) for(var x=0; x<w; x++) { var gr=data[off+(x<<1)], al=(rs(data,off+(x<<
|
|
13377
|
+
else if(depth==16) for(var x=0; x<w; x++) { var gr=data[off+(x<<1)], al=(rs(data,off+(x<<1))==tr)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
|
|
13329
13378
|
}
|
|
13330
13379
|
}
|
|
13331
13380
|
//console.log(Date.now()-time);
|
|
@@ -13351,6 +13400,7 @@ UPNG.decode = function(buff)
|
|
|
13351
13400
|
//console.log(type,len);
|
|
13352
13401
|
|
|
13353
13402
|
if (type=="IHDR") { UPNG.decode._IHDR(data, offset, out); }
|
|
13403
|
+
else if(type=="CgBI") { out.tabs[type] = data.slice(offset,offset+4); }
|
|
13354
13404
|
else if(type=="IDAT") {
|
|
13355
13405
|
for(var i=0; i<len; i++) dd[doff+i] = data[offset+i];
|
|
13356
13406
|
doff += len;
|
|
@@ -13380,11 +13430,16 @@ UPNG.decode = function(buff)
|
|
|
13380
13430
|
out.tabs[type] = [];
|
|
13381
13431
|
for(var i=0; i<8; i++) out.tabs[type].push(bin.readUint(data, offset+i*4));
|
|
13382
13432
|
}
|
|
13383
|
-
else if(type=="tEXt") {
|
|
13433
|
+
else if(type=="tEXt" || type=="zTXt") {
|
|
13384
13434
|
if(out.tabs[type]==null) out.tabs[type] = {};
|
|
13385
13435
|
var nz = bin.nextZero(data, offset);
|
|
13386
13436
|
var keyw = bin.readASCII(data, offset, nz-offset);
|
|
13387
|
-
var text =
|
|
13437
|
+
var text, tl=offset+len-nz-1;
|
|
13438
|
+
if(type=="tEXt") text = bin.readASCII(data, nz+1, tl);
|
|
13439
|
+
else {
|
|
13440
|
+
var bfr = UPNG.decode._inflate(data.slice(nz+2,nz+2+tl));
|
|
13441
|
+
text = bin.readUTF8(bfr,0,bfr.length);
|
|
13442
|
+
}
|
|
13388
13443
|
out.tabs[type][keyw] = text;
|
|
13389
13444
|
}
|
|
13390
13445
|
else if(type=="iTXt") {
|
|
@@ -13392,12 +13447,17 @@ UPNG.decode = function(buff)
|
|
|
13392
13447
|
var nz = 0, off = offset;
|
|
13393
13448
|
nz = bin.nextZero(data, off);
|
|
13394
13449
|
var keyw = bin.readASCII(data, off, nz-off); off = nz + 1;
|
|
13395
|
-
data[off]; data[off+1]; off+=2;
|
|
13450
|
+
var cflag = data[off]; data[off+1]; off+=2;
|
|
13396
13451
|
nz = bin.nextZero(data, off);
|
|
13397
13452
|
bin.readASCII(data, off, nz-off); off = nz + 1;
|
|
13398
13453
|
nz = bin.nextZero(data, off);
|
|
13399
13454
|
bin.readUTF8(data, off, nz-off); off = nz + 1;
|
|
13400
|
-
var text
|
|
13455
|
+
var text, tl=len-(off-offset);
|
|
13456
|
+
if(cflag==0) text = bin.readUTF8(data, off, tl);
|
|
13457
|
+
else {
|
|
13458
|
+
var bfr = UPNG.decode._inflate(data.slice(off,off+tl));
|
|
13459
|
+
text = bin.readUTF8(bfr,0,bfr.length);
|
|
13460
|
+
}
|
|
13401
13461
|
out.tabs[type][keyw] = text;
|
|
13402
13462
|
}
|
|
13403
13463
|
else if(type=="PLTE") {
|
|
@@ -13424,12 +13484,12 @@ UPNG.decode = function(buff)
|
|
|
13424
13484
|
else if(type=="IEND") {
|
|
13425
13485
|
break;
|
|
13426
13486
|
}
|
|
13427
|
-
//else { log("unknown chunk type", type, len); }
|
|
13487
|
+
//else { console.log("unknown chunk type", type, len); out.tabs[type]=data.slice(offset,offset+len); }
|
|
13428
13488
|
offset += len;
|
|
13429
13489
|
bin.readUint(data, offset); offset += 4;
|
|
13430
13490
|
}
|
|
13431
13491
|
if(foff!=0) { var fr = out.frames[out.frames.length-1];
|
|
13432
|
-
fr.data = UPNG.decode._decompress(out, fd.slice(0,foff), fr.rect.width, fr.rect.height);
|
|
13492
|
+
fr.data = UPNG.decode._decompress(out, fd.slice(0,foff), fr.rect.width, fr.rect.height);
|
|
13433
13493
|
}
|
|
13434
13494
|
out.data = UPNG.decode._decompress(out, dd, out.width, out.height);
|
|
13435
13495
|
|
|
@@ -13439,7 +13499,8 @@ UPNG.decode = function(buff)
|
|
|
13439
13499
|
|
|
13440
13500
|
UPNG.decode._decompress = function(out, dd, w, h) {
|
|
13441
13501
|
var bpp = UPNG.decode._getBPP(out), bpl = Math.ceil(w*bpp/8), buff = new Uint8Array((bpl+1+out.interlace)*h);
|
|
13442
|
-
dd = UPNG.
|
|
13502
|
+
if(out.tabs["CgBI"]) dd = UPNG.inflateRaw(dd,buff);
|
|
13503
|
+
else dd = UPNG.decode._inflate(dd,buff);
|
|
13443
13504
|
if (out.interlace==0) dd = UPNG.decode._filterZero(dd, out, 0, w, h);
|
|
13444
13505
|
else if(out.interlace==1) dd = UPNG.decode._readInterlace(dd, out);
|
|
13445
13506
|
//console.log(Date.now()-time);
|
|
@@ -13449,7 +13510,7 @@ UPNG.decode._decompress = function(out, dd, w, h) {
|
|
|
13449
13510
|
UPNG.decode._inflate = function(data, buff) { var out=UPNG["inflateRaw"](new Uint8Array(data.buffer, 2,data.length-6),buff); return out; };
|
|
13450
13511
|
UPNG.inflateRaw=function(){var H={};H.H={};H.H.N=function(N,W){var R=Uint8Array,i=0,m=0,J=0,h=0,Q=0,X=0,u=0,w=0,d=0,v,C;
|
|
13451
13512
|
if(N[0]==3&&N[1]==0)return W?W:new R(0);var V=H.H,n=V.b,A=V.e,l=V.R,M=V.n,I=V.A,e=V.Z,b=V.m,Z=W==null;
|
|
13452
|
-
if(Z)W=new R(N.length>>>2<<
|
|
13513
|
+
if(Z)W=new R(N.length>>>2<<5);while(i==0){i=n(N,d,1);m=n(N,d+1,2);d+=3;if(m==0){if((d&7)!=0)d+=8-(d&7);
|
|
13453
13514
|
var D=(d>>>3)+4,q=N[D-4]|N[D-3]<<8;if(Z)W=H.H.W(W,w+q);W.set(new R(N.buffer,N.byteOffset+D,q),w);d=D+q<<3;
|
|
13454
13515
|
w+=q;continue}if(Z)W=H.H.W(W,w+(1<<17));if(m==1){v=b.J;C=b.h;X=(1<<9)-1;u=(1<<5)-1;}if(m==2){J=A(N,d,5)+257;
|
|
13455
13516
|
h=A(N,d+5,5)+1;Q=A(N,d+10,4)+4;d+=14;var j=1;for(var c=0;c<38;c+=2){b.Q[c]=0;b.Q[c+1]=0;}for(var c=0;
|
|
@@ -13546,7 +13607,7 @@ UPNG.decode._filterZero = function(data, out, off, w, h)
|
|
|
13546
13607
|
var bpp = UPNG.decode._getBPP(out), bpl = Math.ceil(w*bpp/8), paeth = UPNG.decode._paeth;
|
|
13547
13608
|
bpp = Math.ceil(bpp/8);
|
|
13548
13609
|
|
|
13549
|
-
var i
|
|
13610
|
+
var i,di, type=data[off], x=0;
|
|
13550
13611
|
|
|
13551
13612
|
if(type>1) data[off]=[0,0,1][type-2];
|
|
13552
13613
|
if(type==3) for(x=bpp; x<bpl; x++) data[x+1] = (data[x+1] + (data[x+1-bpp]>>>1) )&255;
|
|
@@ -13646,12 +13707,13 @@ UPNG._copyTile = function(sb, sw, sh, tb, tw, th, xoff, yoff, mode)
|
|
|
13646
13707
|
|
|
13647
13708
|
|
|
13648
13709
|
|
|
13710
|
+
|
|
13649
13711
|
UPNG.encode = function(bufs, w, h, ps, dels, tabs, forbidPlte)
|
|
13650
13712
|
{
|
|
13651
13713
|
if(ps==null) ps=0;
|
|
13652
13714
|
if(forbidPlte==null) forbidPlte = false;
|
|
13653
13715
|
|
|
13654
|
-
var nimg = UPNG.encode.compress(bufs, w, h, ps, [false, false, false, 0, forbidPlte]);
|
|
13716
|
+
var nimg = UPNG.encode.compress(bufs, w, h, ps, [false, false, false, 0, forbidPlte,false]);
|
|
13655
13717
|
UPNG.encode.compressPNG(nimg, -1);
|
|
13656
13718
|
|
|
13657
13719
|
return UPNG.encode._main(nimg, w, h, dels, tabs);
|
|
@@ -13799,7 +13861,7 @@ UPNG.encode.compressPNG = function(out, filter, levelZero) {
|
|
|
13799
13861
|
UPNG.encode.compress = function(bufs, w, h, ps, prms) // prms: onlyBlend, minBits, forbidPlte
|
|
13800
13862
|
{
|
|
13801
13863
|
//var time = Date.now();
|
|
13802
|
-
var onlyBlend = prms[0], evenCrd = prms[1], forbidPrev = prms[2], minBits = prms[3], forbidPlte = prms[4];
|
|
13864
|
+
var onlyBlend = prms[0], evenCrd = prms[1], forbidPrev = prms[2], minBits = prms[3], forbidPlte = prms[4], dither=prms[5];
|
|
13803
13865
|
|
|
13804
13866
|
var ctype = 6, depth = 8, alphaAnd=255;
|
|
13805
13867
|
|
|
@@ -13815,17 +13877,27 @@ UPNG.encode.compress = function(bufs, w, h, ps, prms) // prms: onlyBlend, minBi
|
|
|
13815
13877
|
var frms = UPNG.encode.framize(bufs, w, h, onlyBlend, evenCrd, forbidPrev);
|
|
13816
13878
|
//console.log("framize", Date.now()-time); time = Date.now();
|
|
13817
13879
|
|
|
13818
|
-
var cmap={}, plte=[], inds=[];
|
|
13880
|
+
var cmap={}, plte=[], inds=[];
|
|
13819
13881
|
|
|
13820
13882
|
if(ps!=0) {
|
|
13821
13883
|
var nbufs = []; for(var i=0; i<frms.length; i++) nbufs.push(frms[i].img.buffer);
|
|
13822
13884
|
|
|
13823
|
-
var abuf = UPNG.encode.concatRGBA(nbufs), qres = UPNG.quantize(abuf, ps);
|
|
13824
|
-
var cof = 0, bb = new Uint8Array(qres.abuf);
|
|
13825
|
-
for(var i=0; i<frms.length; i++) { var ti=frms[i].img, bln=ti.length; inds.push(new Uint8Array(qres.inds.buffer, cof>>2, bln>>2));
|
|
13826
|
-
for(var j=0; j<bln; j+=4) { ti[j]=bb[cof+j]; ti[j+1]=bb[cof+j+1]; ti[j+2]=bb[cof+j+2]; ti[j+3]=bb[cof+j+3]; } cof+=bln; }
|
|
13885
|
+
var abuf = UPNG.encode.concatRGBA(nbufs), qres = UPNG.quantize(abuf, ps);
|
|
13827
13886
|
|
|
13828
13887
|
for(var i=0; i<qres.plte.length; i++) plte.push(qres.plte[i].est.rgba);
|
|
13888
|
+
|
|
13889
|
+
var cof = 0;
|
|
13890
|
+
for(var i=0; i<frms.length; i++) {
|
|
13891
|
+
var frm=frms[i], bln=frm.img.length, ind = new Uint8Array(qres.inds.buffer, cof>>2, bln>>2); inds.push(ind);
|
|
13892
|
+
var bb = new Uint8Array(qres.abuf,cof,bln);
|
|
13893
|
+
|
|
13894
|
+
//console.log(frm.img, frm.width, frm.height);
|
|
13895
|
+
//var time = Date.now();
|
|
13896
|
+
if(dither) UPNG.encode.dither(frm.img, frm.rect.width, frm.rect.height, plte, bb, ind);
|
|
13897
|
+
//console.log(Date.now()-time);
|
|
13898
|
+
frm.img.set(bb); cof+=bln;
|
|
13899
|
+
}
|
|
13900
|
+
|
|
13829
13901
|
//console.log("quantize", Date.now()-time); time = Date.now();
|
|
13830
13902
|
}
|
|
13831
13903
|
else {
|
|
@@ -14017,8 +14089,8 @@ UPNG.encode._filterZero = function(img,h,bpp,bpl,data, filter, levelZero)
|
|
|
14017
14089
|
else if(h*bpl>500000 || bpp==1) ftry=[0];
|
|
14018
14090
|
var opts; if(levelZero) opts={level:0};
|
|
14019
14091
|
|
|
14020
|
-
var CMPR = (levelZero && UZIP!=null) ? UZIP : pako$1;
|
|
14021
14092
|
|
|
14093
|
+
var CMPR = (data.length>10e6 && UZIP!=null) ? UZIP : pako$1;
|
|
14022
14094
|
for(var i=0; i<ftry.length; i++) {
|
|
14023
14095
|
for(var y=0; y<h; y++) UPNG.encode._filterLine(data, img, y, bpl, bpp, ftry[i]);
|
|
14024
14096
|
//var nimg = new Uint8Array(data.length);
|
|
@@ -14028,6 +14100,7 @@ UPNG.encode._filterZero = function(img,h,bpp,bpl,data, filter, levelZero)
|
|
|
14028
14100
|
//console.log(crc, UZIP.adler(data,2,data.length-6));
|
|
14029
14101
|
fls.push(CMPR["deflate"](data,opts));
|
|
14030
14102
|
}
|
|
14103
|
+
|
|
14031
14104
|
var ti, tsize=1e9;
|
|
14032
14105
|
for(var i=0; i<fls.length; i++) if(fls[i].length<tsize) { ti=i; tsize=fls[i].length; }
|
|
14033
14106
|
return fls[ti];
|
|
@@ -14082,27 +14155,30 @@ UPNG.crc = {
|
|
|
14082
14155
|
|
|
14083
14156
|
UPNG.quantize = function(abuf, ps)
|
|
14084
14157
|
{
|
|
14085
|
-
var
|
|
14158
|
+
var sb = new Uint8Array(abuf), tb = sb.slice(0), tb32 = new Uint32Array(tb.buffer);
|
|
14086
14159
|
|
|
14087
|
-
var KD = UPNG.quantize.getKDtree(
|
|
14160
|
+
var KD = UPNG.quantize.getKDtree(tb, ps);
|
|
14088
14161
|
var root = KD[0], leafs = KD[1];
|
|
14089
14162
|
|
|
14090
|
-
UPNG.quantize.planeDst;
|
|
14091
|
-
var
|
|
14092
|
-
|
|
14093
|
-
var inds = new Uint8Array(oimg.length>>2);
|
|
14094
|
-
for(var i=0; i<len; i+=4) {
|
|
14095
|
-
var r=sb[i]*(1/255), g=sb[i+1]*(1/255), b=sb[i+2]*(1/255), a=sb[i+3]*(1/255);
|
|
14096
|
-
|
|
14097
|
-
// exact, but too slow :(
|
|
14098
|
-
var nd = UPNG.quantize.getNearest(root, r, g, b, a);
|
|
14099
|
-
//var nd = root;
|
|
14100
|
-
//while(nd.left) nd = (planeDst(nd.est,r,g,b,a)<=0) ? nd.left : nd.right;
|
|
14163
|
+
var planeDst = UPNG.quantize.planeDst;
|
|
14164
|
+
var len=sb.length;
|
|
14101
14165
|
|
|
14102
|
-
|
|
14103
|
-
|
|
14104
|
-
|
|
14105
|
-
|
|
14166
|
+
var inds = new Uint8Array(len>>2), nd;
|
|
14167
|
+
if(sb.length<20e6) // precise, but slow :(
|
|
14168
|
+
for(var i=0; i<len; i+=4) {
|
|
14169
|
+
var r=sb[i]*(1/255), g=sb[i+1]*(1/255), b=sb[i+2]*(1/255), a=sb[i+3]*(1/255);
|
|
14170
|
+
|
|
14171
|
+
nd = UPNG.quantize.getNearest(root, r, g, b, a);
|
|
14172
|
+
inds[i>>2] = nd.ind; tb32[i>>2] = nd.est.rgba;
|
|
14173
|
+
}
|
|
14174
|
+
else
|
|
14175
|
+
for(var i=0; i<len; i+=4) {
|
|
14176
|
+
var r=sb[i]*(1/255), g=sb[i+1]*(1/255), b=sb[i+2]*(1/255), a=sb[i+3]*(1/255);
|
|
14177
|
+
|
|
14178
|
+
nd = root; while(nd.left) nd = (planeDst(nd.est,r,g,b,a)<=0) ? nd.left : nd.right;
|
|
14179
|
+
inds[i>>2] = nd.ind; tb32[i>>2] = nd.est.rgba;
|
|
14180
|
+
}
|
|
14181
|
+
return { abuf:tb.buffer, inds:inds, plte:leafs };
|
|
14106
14182
|
};
|
|
14107
14183
|
|
|
14108
14184
|
UPNG.quantize.getKDtree = function(nimg, ps, err) {
|
|
@@ -14210,12 +14286,12 @@ UPNG.quantize.estats = function(stats){
|
|
|
14210
14286
|
];
|
|
14211
14287
|
|
|
14212
14288
|
var A = Rj, M = UPNG.M4;
|
|
14213
|
-
var b = [
|
|
14289
|
+
var b = [Math.random(),Math.random(),Math.random(),Math.random()], mi = 0, tmi = 0;
|
|
14214
14290
|
|
|
14215
14291
|
if(N!=0)
|
|
14216
|
-
for(var i=0; i<
|
|
14292
|
+
for(var i=0; i<16; i++) {
|
|
14217
14293
|
b = M.multVec(A, b); tmi = Math.sqrt(M.dot(b,b)); b = M.sml(1/tmi, b);
|
|
14218
|
-
if(Math.abs(tmi-mi)<1e-9) break; mi = tmi;
|
|
14294
|
+
if(i!=0 && Math.abs(tmi-mi)<1e-9) break; mi = tmi;
|
|
14219
14295
|
}
|
|
14220
14296
|
//b = [0,0,1,0]; mi=N;
|
|
14221
14297
|
var q = [m0*iN, m1*iN, m2*iN, m3*iN];
|
|
@@ -14252,6 +14328,66 @@ UPNG.encode.concatRGBA = function(bufs) {
|
|
|
14252
14328
|
return nimg.buffer;
|
|
14253
14329
|
};
|
|
14254
14330
|
|
|
14331
|
+
UPNG.encode.dither = function(sb, w, h, plte, tb, oind) {
|
|
14332
|
+
|
|
14333
|
+
function addErr(er, tg, ti, f) {
|
|
14334
|
+
tg[ti]+=(er[0]*f)>>4; tg[ti+1]+=(er[1]*f)>>4; tg[ti+2]+=(er[2]*f)>>4; tg[ti+3]+=(er[3]*f)>>4;
|
|
14335
|
+
}
|
|
14336
|
+
function N(x) { return Math.max(0, Math.min(255, x)); }
|
|
14337
|
+
function D(a,b) { var dr=a[0]-b[0], dg=a[1]-b[1], db=a[2]-b[2], da=a[3]-b[3]; return (dr*dr + dg*dg + db*db + da*da); }
|
|
14338
|
+
|
|
14339
|
+
|
|
14340
|
+
var pc=plte.length, nplt = [];
|
|
14341
|
+
for(var i=0; i<pc; i++) {
|
|
14342
|
+
var c = plte[i];
|
|
14343
|
+
nplt.push([((c>>>0)&255), ((c>>>8)&255), ((c>>>16)&255), ((c>>>24)&255)]);
|
|
14344
|
+
}
|
|
14345
|
+
for(var i=0; i<pc; i++) {
|
|
14346
|
+
var ne=0xffffffff, ni=0;
|
|
14347
|
+
for(var j=0; j<pc; j++) { var ce=D(nplt[i],nplt[j]); if(j!=i && ce<ne) { ne=ce; ni=j; } }
|
|
14348
|
+
}
|
|
14349
|
+
|
|
14350
|
+
var tb32 = new Uint32Array(tb.buffer);
|
|
14351
|
+
var err = new Int16Array(w*h*4);
|
|
14352
|
+
|
|
14353
|
+
for(var y=0; y<h; y++) {
|
|
14354
|
+
for(var x=0; x<w; x++) {
|
|
14355
|
+
var i = (y*w+x)*4;
|
|
14356
|
+
|
|
14357
|
+
var cc = [N(sb[i]+err[i]), N(sb[i+1]+err[i+1]), N(sb[i+2]+err[i+2]), N(sb[i+3]+err[i+3])];
|
|
14358
|
+
|
|
14359
|
+
var ni=0, nd = 0xffffff;
|
|
14360
|
+
for(var j=0; j<pc; j++) {
|
|
14361
|
+
var cd = D(cc,nplt[j]);
|
|
14362
|
+
if(cd<nd) { nd=cd; ni=j; }
|
|
14363
|
+
}
|
|
14364
|
+
|
|
14365
|
+
//ni = oind[i>>2];
|
|
14366
|
+
var nc = nplt[ni];
|
|
14367
|
+
var er = [cc[0]-nc[0], cc[1]-nc[1], cc[2]-nc[2], cc[3]-nc[3]];
|
|
14368
|
+
|
|
14369
|
+
//addErr(er, err, i+4, 16);
|
|
14370
|
+
|
|
14371
|
+
//*
|
|
14372
|
+
if(x!=w-1) addErr(er, err, i+4 , 7);
|
|
14373
|
+
if(y!=h-1) {
|
|
14374
|
+
if(x!= 0) addErr(er, err, i+4*w-4, 3);
|
|
14375
|
+
addErr(er, err, i+4*w , 5);
|
|
14376
|
+
if(x!=w-1) addErr(er, err, i+4*w+4, 1); //*/
|
|
14377
|
+
}
|
|
14378
|
+
|
|
14379
|
+
oind[i>>2] = ni; tb32[i>>2] = plte[ni];
|
|
14380
|
+
}
|
|
14381
|
+
}
|
|
14382
|
+
};
|
|
14383
|
+
if (typeof module !== 'undefined') {
|
|
14384
|
+
if (exports && exports.default) {
|
|
14385
|
+
module.exports = exports.default;
|
|
14386
|
+
} else if (exports) {
|
|
14387
|
+
module.exports = exports;
|
|
14388
|
+
}
|
|
14389
|
+
}
|
|
14390
|
+
|
|
14255
14391
|
const getImageType = (ctype) => {
|
|
14256
14392
|
if (ctype === 0)
|
|
14257
14393
|
return PngType.Greyscale;
|
|
@@ -30164,7 +30300,7 @@ PDFEmbeddedPage.of = (ref, doc, embedder) => new PDFEmbeddedPage(ref, doc, embed
|
|
|
30164
30300
|
*/
|
|
30165
30301
|
class PDFFont {
|
|
30166
30302
|
constructor(ref, doc, embedder) {
|
|
30167
|
-
this.
|
|
30303
|
+
this.alreadyEmbedded = false;
|
|
30168
30304
|
assertIs(ref, 'ref', [[PDFRef, 'PDFRef']]);
|
|
30169
30305
|
assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);
|
|
30170
30306
|
assertIs(embedder, 'embedder', [
|
|
@@ -30188,7 +30324,6 @@ class PDFFont {
|
|
|
30188
30324
|
*/
|
|
30189
30325
|
encodeText(text) {
|
|
30190
30326
|
assertIs(text, 'text', ['string']);
|
|
30191
|
-
this.modified = true;
|
|
30192
30327
|
return this.embedder.encodeText(text);
|
|
30193
30328
|
}
|
|
30194
30329
|
/**
|
|
@@ -30263,10 +30398,9 @@ class PDFFont {
|
|
|
30263
30398
|
*/
|
|
30264
30399
|
embed() {
|
|
30265
30400
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30266
|
-
|
|
30267
|
-
if (this.modified) {
|
|
30401
|
+
if (!this.alreadyEmbedded) {
|
|
30268
30402
|
yield this.embedder.embedIntoContext(this.doc.context, this.ref);
|
|
30269
|
-
this.
|
|
30403
|
+
this.alreadyEmbedded = true;
|
|
30270
30404
|
}
|
|
30271
30405
|
});
|
|
30272
30406
|
}
|
|
@@ -37188,6 +37322,51 @@ class PDFDocument {
|
|
|
37188
37322
|
.map((value) => value[1])
|
|
37189
37323
|
.filter((ov) => ov.actual || ov.previous.length);
|
|
37190
37324
|
}
|
|
37325
|
+
/**
|
|
37326
|
+
* Saves the current changes to the document as an incremental update, returns the full document,
|
|
37327
|
+
* like save method, and modifies the internal state to be able to continue editing the document
|
|
37328
|
+
* for another incremental update.
|
|
37329
|
+
* This allows you to save multiple incremental updates without reloading the PDF.
|
|
37330
|
+
*
|
|
37331
|
+
* For example:
|
|
37332
|
+
* ```js
|
|
37333
|
+
* const pdfDoc = await PDFDocument.load(pdfBytes, { forIncrementalUpdate: true })
|
|
37334
|
+
*
|
|
37335
|
+
* const page = pdfDoc.getPage(0)
|
|
37336
|
+
* page.drawText('First update')
|
|
37337
|
+
* const firstsave = await pdfDoc.saveAndContinue()
|
|
37338
|
+
*
|
|
37339
|
+
* page.drawText('Second update', { y: 100 })
|
|
37340
|
+
* const secondsave = await pdfDoc.saveAndContinue()
|
|
37341
|
+
* ```
|
|
37342
|
+
*
|
|
37343
|
+
* @param options The options to be used when saving changes.
|
|
37344
|
+
* @returns Resolves with the complete PDF bytes including all updates.
|
|
37345
|
+
*/
|
|
37346
|
+
saveAndContinue(options = {}) {
|
|
37347
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
37348
|
+
if (!this.context.pdfFileDetails.originalBytes || !this.context.snapshot) {
|
|
37349
|
+
throw new Error('saveAndContinue() requires the document to be loaded with forIncrementalUpdate: true');
|
|
37350
|
+
}
|
|
37351
|
+
const originalBytes = this.context.pdfFileDetails.originalBytes;
|
|
37352
|
+
const incrementalBytes = yield this.saveIncremental(this.context.snapshot, options);
|
|
37353
|
+
const newPdfBytes = new Uint8Array(originalBytes.byteLength + incrementalBytes.byteLength);
|
|
37354
|
+
newPdfBytes.set(originalBytes);
|
|
37355
|
+
newPdfBytes.set(incrementalBytes, originalBytes.byteLength);
|
|
37356
|
+
this.context.pdfFileDetails.originalBytes = newPdfBytes;
|
|
37357
|
+
this.context.pdfFileDetails.pdfSize = newPdfBytes.byteLength;
|
|
37358
|
+
const incrementalStr = new TextDecoder('latin1').decode(incrementalBytes);
|
|
37359
|
+
const startxrefMatch = incrementalStr.match(/startxref\s+(\d+)/);
|
|
37360
|
+
if (startxrefMatch) {
|
|
37361
|
+
this.context.pdfFileDetails.prevStartXRef = parseInt(startxrefMatch[1], 10);
|
|
37362
|
+
}
|
|
37363
|
+
else {
|
|
37364
|
+
this.context.pdfFileDetails.prevStartXRef = originalBytes.byteLength;
|
|
37365
|
+
}
|
|
37366
|
+
this.context.snapshot = this.takeSnapshot();
|
|
37367
|
+
return newPdfBytes;
|
|
37368
|
+
});
|
|
37369
|
+
}
|
|
37191
37370
|
prepareForSave(options) {
|
|
37192
37371
|
return __awaiter(this, void 0, void 0, function* () {
|
|
37193
37372
|
const { addDefaultPage = true, updateFieldAppearances = true } = options;
|