@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.
Files changed (66) hide show
  1. package/README.md +44 -0
  2. package/cjs/api/PDFDocument.d.ts +22 -0
  3. package/cjs/api/PDFDocument.d.ts.map +1 -1
  4. package/cjs/api/PDFDocument.js +45 -0
  5. package/cjs/api/PDFDocument.js.map +1 -1
  6. package/cjs/api/PDFFont.d.ts +1 -1
  7. package/cjs/api/PDFFont.d.ts.map +1 -1
  8. package/cjs/api/PDFFont.js +3 -5
  9. package/cjs/api/PDFFont.js.map +1 -1
  10. package/cjs/core/PDFContext.d.ts +2 -0
  11. package/cjs/core/PDFContext.d.ts.map +1 -1
  12. package/cjs/core/PDFContext.js +43 -2
  13. package/cjs/core/PDFContext.js.map +1 -1
  14. package/cjs/core/objects/PDFArray.d.ts +1 -0
  15. package/cjs/core/objects/PDFArray.d.ts.map +1 -1
  16. package/cjs/core/objects/PDFArray.js +7 -0
  17. package/cjs/core/objects/PDFArray.js.map +1 -1
  18. package/cjs/core/objects/PDFRawStream.d.ts.map +1 -1
  19. package/cjs/core/objects/PDFRawStream.js +1 -0
  20. package/cjs/core/objects/PDFRawStream.js.map +1 -1
  21. package/cjs/utils/png.js +1 -1
  22. package/cjs/utils/png.js.map +1 -1
  23. package/dist/pdf-lib.esm.js +224 -45
  24. package/dist/pdf-lib.esm.js.map +1 -1
  25. package/dist/pdf-lib.esm.min.js +3 -3
  26. package/dist/pdf-lib.esm.min.js.map +1 -1
  27. package/dist/pdf-lib.js +224 -45
  28. package/dist/pdf-lib.js.map +1 -1
  29. package/dist/pdf-lib.min.js +2 -2
  30. package/dist/pdf-lib.min.js.map +1 -1
  31. package/es/api/PDFDocument.d.ts +22 -0
  32. package/es/api/PDFDocument.d.ts.map +1 -1
  33. package/es/api/PDFDocument.js +45 -0
  34. package/es/api/PDFDocument.js.map +1 -1
  35. package/es/api/PDFFont.d.ts +1 -1
  36. package/es/api/PDFFont.d.ts.map +1 -1
  37. package/es/api/PDFFont.js +3 -5
  38. package/es/api/PDFFont.js.map +1 -1
  39. package/es/core/PDFContext.d.ts +2 -0
  40. package/es/core/PDFContext.d.ts.map +1 -1
  41. package/es/core/PDFContext.js +43 -2
  42. package/es/core/PDFContext.js.map +1 -1
  43. package/es/core/objects/PDFArray.d.ts +1 -0
  44. package/es/core/objects/PDFArray.d.ts.map +1 -1
  45. package/es/core/objects/PDFArray.js +7 -0
  46. package/es/core/objects/PDFArray.js.map +1 -1
  47. package/es/core/objects/PDFRawStream.d.ts.map +1 -1
  48. package/es/core/objects/PDFRawStream.js +1 -0
  49. package/es/core/objects/PDFRawStream.js.map +1 -1
  50. package/es/utils/png.js +1 -1
  51. package/es/utils/png.js.map +1 -1
  52. package/package.json +4 -3
  53. package/src/api/PDFDocument.ts +60 -0
  54. package/src/api/PDFFont.ts +3 -5
  55. package/src/core/PDFContext.ts +42 -1
  56. package/src/core/objects/PDFArray.ts +8 -0
  57. package/src/core/objects/PDFRawStream.ts +1 -0
  58. package/src/utils/png.ts +1 -1
  59. package/ts3.4/cjs/api/PDFDocument.d.ts +22 -0
  60. package/ts3.4/cjs/api/PDFFont.d.ts +1 -1
  61. package/ts3.4/cjs/core/PDFContext.d.ts +2 -0
  62. package/ts3.4/cjs/core/objects/PDFArray.d.ts +1 -0
  63. package/ts3.4/es/api/PDFDocument.d.ts +22 -0
  64. package/ts3.4/es/api/PDFFont.d.ts +1 -1
  65. package/ts3.4/es/core/PDFContext.d.ts +2 -0
  66. 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;CAG3C;AAED,eAAe,YAAY,CAAC"}
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"}
@@ -25,6 +25,7 @@ class PDFRawStream extends PDFStream_1.default {
25
25
  return this.contents.length;
26
26
  }
27
27
  updateContents(contents) {
28
+ this.dict.registerChange();
28
29
  this.contents = contents;
29
30
  }
30
31
  }
@@ -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;;AAzCM,eAAE,GAAG,CACV,IAAa,EACb,QAAoB,EACpB,SAA2B,EAC3B,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAwCnD,kBAAe,YAAY,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("@pdf-lib/upng"));
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;
@@ -1 +1 @@
1
- {"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/utils/png.ts"],"names":[],"mappings":";;;;AAAA,iEAAiC;AAEjC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;IACrC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,SAAS,CAAC;IAC1C,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,UAAU,CAAC;IAC3C,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,aAAa,CAAC;IAC9C,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,kBAAkB,CAAC;IACnD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,mBAAmB,CAAC;IACpD,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,WAAuB,EAAE,EAAE;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAEpD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,OAAO,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE;QACtC,UAAU,CAAC,SAAS,EAAE,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;QACpD,UAAU,CAAC,SAAS,EAAE,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;QACpD,UAAU,CAAC,SAAS,EAAE,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;QACpD,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;KACzD;IAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AACtC,CAAC,CAAC;AAEF,IAAY,OAMX;AAND,WAAY,OAAO;IACjB,kCAAuB,CAAA;IACvB,oCAAyB,CAAA;IACzB,0CAA+B,CAAA;IAC/B,oDAAyC,CAAA;IACzC,sDAA2C,CAAA;AAC7C,CAAC,EANW,OAAO,GAAP,eAAO,KAAP,eAAO,QAMlB;AAED,MAAa,GAAG;IAUd,YAAoB,OAAmB;QACrC,MAAM,IAAI,GAAG,cAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE9D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACzD,IAAI,cAAc;YAAE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAErD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC5B,CAAC;;AA7BH,kBA8BC;AA7BQ,QAAI,GAAG,CAAC,OAAmB,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/utils/png.ts"],"names":[],"mappings":"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"}
@@ -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
- this.snapshot.markObjForSave(obj);
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<<i))==tr)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
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 = bin.readASCII(data, nz+1, offset+len-nz-1);
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 = bin.readUTF8(data, off, len-(off-offset));
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); foff=0;
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.decode._inflate(dd,buff);
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<<3);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);
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=0, di=1, type=data[off], x=0;
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 oimg = new Uint8Array(abuf), nimg = oimg.slice(0), nimg32 = new Uint32Array(nimg.buffer);
14158
+ var sb = new Uint8Array(abuf), tb = sb.slice(0), tb32 = new Uint32Array(tb.buffer);
14086
14159
 
14087
- var KD = UPNG.quantize.getKDtree(nimg, ps);
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 sb = oimg, tb = nimg32, len=sb.length;
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
- inds[i>>2] = nd.ind;
14103
- tb[i>>2] = nd.est.rgba;
14104
- }
14105
- return { abuf:nimg.buffer, inds:inds, plte:leafs };
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 = [0.5,0.5,0.5,0.5], mi = 0, tmi = 0;
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<10; 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.modified = true;
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
- // TODO: Cleanup orphan embedded objects if a font is embedded multiple times...
30267
- if (this.modified) {
30401
+ if (!this.alreadyEmbedded) {
30268
30402
  yield this.embedder.embedIntoContext(this.doc.context, this.ref);
30269
- this.modified = false;
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;