@adnsistemas/pdf-lib 2.6.3 → 2.7.0

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 (68) 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 +54 -5
  5. package/cjs/api/PDFDocument.js.map +1 -1
  6. package/cjs/api/PDFDocumentOptions.d.ts +1 -0
  7. package/cjs/api/PDFDocumentOptions.d.ts.map +1 -1
  8. package/cjs/api/PDFFont.d.ts +1 -1
  9. package/cjs/api/PDFFont.d.ts.map +1 -1
  10. package/cjs/api/PDFFont.js +3 -5
  11. package/cjs/api/PDFFont.js.map +1 -1
  12. package/cjs/core/PDFContext.d.ts +2 -0
  13. package/cjs/core/PDFContext.d.ts.map +1 -1
  14. package/cjs/core/PDFContext.js +43 -2
  15. package/cjs/core/PDFContext.js.map +1 -1
  16. package/cjs/core/objects/PDFArray.d.ts +1 -0
  17. package/cjs/core/objects/PDFArray.d.ts.map +1 -1
  18. package/cjs/core/objects/PDFArray.js +7 -0
  19. package/cjs/core/objects/PDFArray.js.map +1 -1
  20. package/cjs/core/objects/PDFRawStream.d.ts.map +1 -1
  21. package/cjs/core/objects/PDFRawStream.js +1 -0
  22. package/cjs/core/objects/PDFRawStream.js.map +1 -1
  23. package/dist/pdf-lib.esm.js +108 -12
  24. package/dist/pdf-lib.esm.js.map +1 -1
  25. package/dist/pdf-lib.esm.min.js +2 -2
  26. package/dist/pdf-lib.esm.min.js.map +1 -1
  27. package/dist/pdf-lib.js +108 -12
  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 +54 -5
  34. package/es/api/PDFDocument.js.map +1 -1
  35. package/es/api/PDFDocumentOptions.d.ts +1 -0
  36. package/es/api/PDFDocumentOptions.d.ts.map +1 -1
  37. package/es/api/PDFFont.d.ts +1 -1
  38. package/es/api/PDFFont.d.ts.map +1 -1
  39. package/es/api/PDFFont.js +3 -5
  40. package/es/api/PDFFont.js.map +1 -1
  41. package/es/core/PDFContext.d.ts +2 -0
  42. package/es/core/PDFContext.d.ts.map +1 -1
  43. package/es/core/PDFContext.js +43 -2
  44. package/es/core/PDFContext.js.map +1 -1
  45. package/es/core/objects/PDFArray.d.ts +1 -0
  46. package/es/core/objects/PDFArray.d.ts.map +1 -1
  47. package/es/core/objects/PDFArray.js +7 -0
  48. package/es/core/objects/PDFArray.js.map +1 -1
  49. package/es/core/objects/PDFRawStream.d.ts.map +1 -1
  50. package/es/core/objects/PDFRawStream.js +1 -0
  51. package/es/core/objects/PDFRawStream.js.map +1 -1
  52. package/package.json +3 -2
  53. package/src/api/PDFDocument.ts +70 -4
  54. package/src/api/PDFDocumentOptions.ts +1 -0
  55. package/src/api/PDFFont.ts +3 -5
  56. package/src/core/PDFContext.ts +42 -1
  57. package/src/core/objects/PDFArray.ts +8 -0
  58. package/src/core/objects/PDFRawStream.ts +1 -0
  59. package/ts3.4/cjs/api/PDFDocument.d.ts +22 -0
  60. package/ts3.4/cjs/api/PDFDocumentOptions.d.ts +1 -0
  61. package/ts3.4/cjs/api/PDFFont.d.ts +1 -1
  62. package/ts3.4/cjs/core/PDFContext.d.ts +2 -0
  63. package/ts3.4/cjs/core/objects/PDFArray.d.ts +1 -0
  64. package/ts3.4/es/api/PDFDocument.d.ts +22 -0
  65. package/ts3.4/es/api/PDFDocumentOptions.d.ts +1 -0
  66. package/ts3.4/es/api/PDFFont.d.ts +1 -1
  67. package/ts3.4/es/core/PDFContext.d.ts +2 -0
  68. package/ts3.4/es/core/objects/PDFArray.d.ts +1 -0
@@ -15,9 +15,11 @@ class PDFArray extends PDFObject_1.default {
15
15
  return this.array.length;
16
16
  }
17
17
  push(object) {
18
+ this.registerChange();
18
19
  this.array.push(object);
19
20
  }
20
21
  insert(index, object) {
22
+ this.registerChange();
21
23
  this.array.splice(index, 0, object);
22
24
  }
23
25
  indexOf(object) {
@@ -25,9 +27,11 @@ class PDFArray extends PDFObject_1.default {
25
27
  return index === -1 ? undefined : index;
26
28
  }
27
29
  remove(index) {
30
+ this.registerChange();
28
31
  this.array.splice(index, 1);
29
32
  }
30
33
  set(idx, object) {
34
+ this.registerChange();
31
35
  this.array[idx] = object;
32
36
  }
33
37
  get(index) {
@@ -102,6 +106,9 @@ class PDFArray extends PDFObject_1.default {
102
106
  }
103
107
  }
104
108
  }
109
+ registerChange() {
110
+ this.context.registerObjectChange(this);
111
+ }
105
112
  }
106
113
  PDFArray.withContext = (context) => new PDFArray(context);
107
114
  exports.default = PDFArray;
@@ -1 +1 @@
1
- {"version":3,"file":"PDFArray.js","sourceRoot":"","sources":["../../../src/core/objects/PDFArray.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PDFArray.js","sourceRoot":"","sources":["../../../src/core/objects/PDFArray.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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)
@@ -30164,7 +30213,7 @@ PDFEmbeddedPage.of = (ref, doc, embedder) => new PDFEmbeddedPage(ref, doc, embed
30164
30213
  */
30165
30214
  class PDFFont {
30166
30215
  constructor(ref, doc, embedder) {
30167
- this.modified = true;
30216
+ this.alreadyEmbedded = false;
30168
30217
  assertIs(ref, 'ref', [[PDFRef, 'PDFRef']]);
30169
30218
  assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);
30170
30219
  assertIs(embedder, 'embedder', [
@@ -30188,7 +30237,6 @@ class PDFFont {
30188
30237
  */
30189
30238
  encodeText(text) {
30190
30239
  assertIs(text, 'text', ['string']);
30191
- this.modified = true;
30192
30240
  return this.embedder.encodeText(text);
30193
30241
  }
30194
30242
  /**
@@ -30263,10 +30311,9 @@ class PDFFont {
30263
30311
  */
30264
30312
  embed() {
30265
30313
  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) {
30314
+ if (!this.alreadyEmbedded) {
30268
30315
  yield this.embedder.embedIntoContext(this.doc.context, this.ref);
30269
- this.modified = false;
30316
+ this.alreadyEmbedded = true;
30270
30317
  }
30271
30318
  });
30272
30319
  }
@@ -37042,7 +37089,10 @@ class PDFDocument {
37042
37089
  */
37043
37090
  save(options = {}) {
37044
37091
  return __awaiter(this, void 0, void 0, function* () {
37045
- const { useObjectStreams = true, objectsPerTick = 50, rewrite = false, } = options;
37092
+ // check PDF version
37093
+ const vparts = this.context.header.getVersionString().split('.');
37094
+ const uOS = options.rewrite || Number(vparts[0]) > 1 || Number(vparts[1]) >= 5;
37095
+ const { useObjectStreams = uOS, objectsPerTick = 50, rewrite = false, } = options;
37046
37096
  assertIs(useObjectStreams, 'useObjectStreams', ['boolean']);
37047
37097
  assertIs(objectsPerTick, 'objectsPerTick', ['number']);
37048
37098
  assertIs(rewrite, 'rewrite', ['boolean']);
@@ -37085,13 +37135,14 @@ class PDFDocument {
37085
37135
  */
37086
37136
  saveIncremental(snapshot, options = {}) {
37087
37137
  return __awaiter(this, void 0, void 0, function* () {
37138
+ // check PDF version
37139
+ const vparts = this.context.header.getVersionString().split('.');
37140
+ const uOS = Number(vparts[0]) > 1 || Number(vparts[1]) >= 5;
37088
37141
  const { objectsPerTick = 50 } = options;
37089
37142
  assertIs(objectsPerTick, 'objectsPerTick', ['number']);
37090
- const saveOptions = Object.assign(Object.assign({}, options), { addDefaultPage: false, updateFieldAppearances: false });
37143
+ const saveOptions = Object.assign(Object.assign({ useObjectStreams: uOS }, options), { addDefaultPage: false, updateFieldAppearances: false });
37091
37144
  yield this.prepareForSave(saveOptions);
37092
- const Writer = this.context.pdfFileDetails.useObjectStreams
37093
- ? PDFStreamWriter
37094
- : PDFWriter;
37145
+ const Writer = saveOptions.useObjectStreams ? PDFStreamWriter : PDFWriter;
37095
37146
  return Writer.forContextWithSnapshot(this.context, objectsPerTick, snapshot).serializeToBuffer();
37096
37147
  });
37097
37148
  }
@@ -37184,6 +37235,51 @@ class PDFDocument {
37184
37235
  .map((value) => value[1])
37185
37236
  .filter((ov) => ov.actual || ov.previous.length);
37186
37237
  }
37238
+ /**
37239
+ * Saves the current changes to the document as an incremental update, returns the full document,
37240
+ * like save method, and modifies the internal state to be able to continue editing the document
37241
+ * for another incremental update.
37242
+ * This allows you to save multiple incremental updates without reloading the PDF.
37243
+ *
37244
+ * For example:
37245
+ * ```js
37246
+ * const pdfDoc = await PDFDocument.load(pdfBytes, { forIncrementalUpdate: true })
37247
+ *
37248
+ * const page = pdfDoc.getPage(0)
37249
+ * page.drawText('First update')
37250
+ * const firstsave = await pdfDoc.saveAndContinue()
37251
+ *
37252
+ * page.drawText('Second update', { y: 100 })
37253
+ * const secondsave = await pdfDoc.saveAndContinue()
37254
+ * ```
37255
+ *
37256
+ * @param options The options to be used when saving changes.
37257
+ * @returns Resolves with the complete PDF bytes including all updates.
37258
+ */
37259
+ saveAndContinue(options = {}) {
37260
+ return __awaiter(this, void 0, void 0, function* () {
37261
+ if (!this.context.pdfFileDetails.originalBytes || !this.context.snapshot) {
37262
+ throw new Error('saveAndContinue() requires the document to be loaded with forIncrementalUpdate: true');
37263
+ }
37264
+ const originalBytes = this.context.pdfFileDetails.originalBytes;
37265
+ const incrementalBytes = yield this.saveIncremental(this.context.snapshot, options);
37266
+ const newPdfBytes = new Uint8Array(originalBytes.byteLength + incrementalBytes.byteLength);
37267
+ newPdfBytes.set(originalBytes);
37268
+ newPdfBytes.set(incrementalBytes, originalBytes.byteLength);
37269
+ this.context.pdfFileDetails.originalBytes = newPdfBytes;
37270
+ this.context.pdfFileDetails.pdfSize = newPdfBytes.byteLength;
37271
+ const incrementalStr = new TextDecoder('latin1').decode(incrementalBytes);
37272
+ const startxrefMatch = incrementalStr.match(/startxref\s+(\d+)/);
37273
+ if (startxrefMatch) {
37274
+ this.context.pdfFileDetails.prevStartXRef = parseInt(startxrefMatch[1], 10);
37275
+ }
37276
+ else {
37277
+ this.context.pdfFileDetails.prevStartXRef = originalBytes.byteLength;
37278
+ }
37279
+ this.context.snapshot = this.takeSnapshot();
37280
+ return newPdfBytes;
37281
+ });
37282
+ }
37187
37283
  prepareForSave(options) {
37188
37284
  return __awaiter(this, void 0, void 0, function* () {
37189
37285
  const { addDefaultPage = true, updateFieldAppearances = true } = options;