@adnsistemas/pdf-lib 2.6.2 → 2.6.4

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 (34) hide show
  1. package/cjs/api/PDFDocument.d.ts.map +1 -1
  2. package/cjs/api/PDFDocument.js +9 -5
  3. package/cjs/api/PDFDocument.js.map +1 -1
  4. package/cjs/api/PDFDocumentOptions.d.ts +1 -0
  5. package/cjs/api/PDFDocumentOptions.d.ts.map +1 -1
  6. package/cjs/core/writers/PDFStreamWriter.d.ts +2 -0
  7. package/cjs/core/writers/PDFStreamWriter.d.ts.map +1 -1
  8. package/cjs/core/writers/PDFStreamWriter.js +19 -0
  9. package/cjs/core/writers/PDFStreamWriter.js.map +1 -1
  10. package/dist/pdf-lib.esm.js +27 -5
  11. package/dist/pdf-lib.esm.js.map +1 -1
  12. package/dist/pdf-lib.esm.min.js +3 -3
  13. package/dist/pdf-lib.esm.min.js.map +1 -1
  14. package/dist/pdf-lib.js +27 -5
  15. package/dist/pdf-lib.js.map +1 -1
  16. package/dist/pdf-lib.min.js +3 -3
  17. package/dist/pdf-lib.min.js.map +1 -1
  18. package/es/api/PDFDocument.d.ts.map +1 -1
  19. package/es/api/PDFDocument.js +9 -5
  20. package/es/api/PDFDocument.js.map +1 -1
  21. package/es/api/PDFDocumentOptions.d.ts +1 -0
  22. package/es/api/PDFDocumentOptions.d.ts.map +1 -1
  23. package/es/core/writers/PDFStreamWriter.d.ts +2 -0
  24. package/es/core/writers/PDFStreamWriter.d.ts.map +1 -1
  25. package/es/core/writers/PDFStreamWriter.js +19 -0
  26. package/es/core/writers/PDFStreamWriter.js.map +1 -1
  27. package/package.json +1 -1
  28. package/src/api/PDFDocument.ts +10 -4
  29. package/src/api/PDFDocumentOptions.ts +1 -0
  30. package/src/core/writers/PDFStreamWriter.ts +14 -0
  31. package/ts3.4/cjs/api/PDFDocumentOptions.d.ts +1 -0
  32. package/ts3.4/cjs/core/writers/PDFStreamWriter.d.ts +2 -0
  33. package/ts3.4/es/api/PDFDocumentOptions.d.ts +1 -0
  34. package/ts3.4/es/core/writers/PDFStreamWriter.d.ts +2 -0
package/dist/pdf-lib.js CHANGED
@@ -12566,11 +12566,14 @@
12566
12566
  class PDFStreamWriter extends PDFWriter {
12567
12567
  constructor(context, objectsPerTick, snapshot, encodeStreams, objectsPerStream) {
12568
12568
  super(context, objectsPerTick, snapshot);
12569
+ // the process of saving uses references numbers, and creates a new indirect object, that has to be deleted after saving
12570
+ this._refToDeleteAfterSave = 0;
12569
12571
  this.encodeStreams = encodeStreams;
12570
12572
  this.objectsPerStream = objectsPerStream;
12571
12573
  }
12572
12574
  computeBufferSize(incremental) {
12573
12575
  return __awaiter(this, void 0, void 0, function* () {
12576
+ this._refToDeleteAfterSave = 0;
12574
12577
  const header = PDFHeader.forVersion(1, 7);
12575
12578
  let size = this.snapshot.pdfSize;
12576
12579
  if (!incremental) {
@@ -12614,6 +12617,7 @@
12614
12617
  chunk = [];
12615
12618
  compressedObjects.push(chunk);
12616
12619
  objectStreamRef = this.context.nextRef();
12620
+ this._refToDeleteAfterSave += 1;
12617
12621
  objectStreamRefs.push(objectStreamRef);
12618
12622
  }
12619
12623
  xrefStream.addCompressedEntry(ref, objectStreamRef, chunk.length);
@@ -12634,6 +12638,7 @@
12634
12638
  yield waitForTick();
12635
12639
  }
12636
12640
  const xrefStreamRef = this.context.nextRef();
12641
+ this._refToDeleteAfterSave += 1;
12637
12642
  xrefStream.dict.set(PDFName.of('Size'), PDFNumber.of(this.context.largestObjectNumber + 1));
12638
12643
  if (this.snapshot.prevStartXRef) {
12639
12644
  xrefStream.dict.set(PDFName.of('Prev'), PDFNumber.of(this.snapshot.prevStartXRef));
@@ -12648,6 +12653,19 @@
12648
12653
  return { size, header, indirectObjects: uncompressedObjects, trailer };
12649
12654
  });
12650
12655
  }
12656
+ serializeToBuffer() {
12657
+ const _super = Object.create(null, {
12658
+ serializeToBuffer: { get: () => super.serializeToBuffer }
12659
+ });
12660
+ return __awaiter(this, void 0, void 0, function* () {
12661
+ const buffer = yield _super.serializeToBuffer.call(this);
12662
+ // delete xref stream created for saving
12663
+ this.context.delete(PDFRef.of(this.context.largestObjectNumber - 1));
12664
+ // fix largestObjectNumbering
12665
+ this.context.largestObjectNumber -= this._refToDeleteAfterSave;
12666
+ return buffer;
12667
+ });
12668
+ }
12651
12669
  }
12652
12670
  PDFStreamWriter.forContext = (context, objectsPerTick, encodeStreams = true, objectsPerStream = 50) => new PDFStreamWriter(context, objectsPerTick, defaultDocumentSnapshot, encodeStreams, objectsPerStream);
12653
12671
  PDFStreamWriter.forContextWithSnapshot = (context, objectsPerTick, snapshot, encodeStreams = true, objectsPerStream = 50) => new PDFStreamWriter(context, objectsPerTick, snapshot, encodeStreams, objectsPerStream);
@@ -37030,7 +37048,10 @@ end\
37030
37048
  */
37031
37049
  save(options = {}) {
37032
37050
  return __awaiter(this, void 0, void 0, function* () {
37033
- const { useObjectStreams = true, objectsPerTick = 50, rewrite = false, } = options;
37051
+ // check PDF version
37052
+ const vparts = this.context.header.getVersionString().split('.');
37053
+ const uOS = options.rewrite || Number(vparts[0]) > 1 || Number(vparts[1]) >= 5;
37054
+ const { useObjectStreams = uOS, objectsPerTick = 50, rewrite = false, } = options;
37034
37055
  assertIs(useObjectStreams, 'useObjectStreams', ['boolean']);
37035
37056
  assertIs(objectsPerTick, 'objectsPerTick', ['number']);
37036
37057
  assertIs(rewrite, 'rewrite', ['boolean']);
@@ -37073,13 +37094,14 @@ end\
37073
37094
  */
37074
37095
  saveIncremental(snapshot, options = {}) {
37075
37096
  return __awaiter(this, void 0, void 0, function* () {
37097
+ // check PDF version
37098
+ const vparts = this.context.header.getVersionString().split('.');
37099
+ const uOS = Number(vparts[0]) > 1 || Number(vparts[1]) >= 5;
37076
37100
  const { objectsPerTick = 50 } = options;
37077
37101
  assertIs(objectsPerTick, 'objectsPerTick', ['number']);
37078
- const saveOptions = Object.assign(Object.assign({}, options), { addDefaultPage: false, updateFieldAppearances: false });
37102
+ const saveOptions = Object.assign(Object.assign({ useObjectStreams: uOS }, options), { addDefaultPage: false, updateFieldAppearances: false });
37079
37103
  yield this.prepareForSave(saveOptions);
37080
- const Writer = this.context.pdfFileDetails.useObjectStreams
37081
- ? PDFStreamWriter
37082
- : PDFWriter;
37104
+ const Writer = saveOptions.useObjectStreams ? PDFStreamWriter : PDFWriter;
37083
37105
  return Writer.forContextWithSnapshot(this.context, objectsPerTick, snapshot).serializeToBuffer();
37084
37106
  });
37085
37107
  }