@adnsistemas/pdf-lib 2.5.0 → 2.6.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 +43 -0
- package/cjs/api/PDFDocument.d.ts +14 -0
- package/cjs/api/PDFDocument.d.ts.map +1 -1
- package/cjs/api/PDFDocument.js +49 -3
- package/cjs/api/PDFDocument.js.map +1 -1
- package/cjs/api/PDFDocumentOptions.d.ts +1 -0
- package/cjs/api/PDFDocumentOptions.d.ts.map +1 -1
- package/cjs/core/PDFContext.d.ts +9 -1
- package/cjs/core/PDFContext.d.ts.map +1 -1
- package/cjs/core/PDFContext.js +54 -3
- package/cjs/core/PDFContext.js.map +1 -1
- package/cjs/core/document/PDFCrossRefSection.d.ts +5 -0
- package/cjs/core/document/PDFCrossRefSection.d.ts.map +1 -1
- package/cjs/core/document/PDFCrossRefSection.js +16 -0
- package/cjs/core/document/PDFCrossRefSection.js.map +1 -1
- package/cjs/core/parser/PDFParser.d.ts +2 -2
- package/cjs/core/parser/PDFParser.d.ts.map +1 -1
- package/cjs/core/parser/PDFParser.js +17 -5
- package/cjs/core/parser/PDFParser.js.map +1 -1
- package/dist/pdf-lib.esm.js +136 -11
- 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 +136 -11
- package/dist/pdf-lib.js.map +1 -1
- package/dist/pdf-lib.min.js +3 -3
- package/dist/pdf-lib.min.js.map +1 -1
- package/es/api/PDFDocument.d.ts +14 -0
- package/es/api/PDFDocument.d.ts.map +1 -1
- package/es/api/PDFDocument.js +49 -3
- package/es/api/PDFDocument.js.map +1 -1
- package/es/api/PDFDocumentOptions.d.ts +1 -0
- package/es/api/PDFDocumentOptions.d.ts.map +1 -1
- package/es/core/PDFContext.d.ts +9 -1
- package/es/core/PDFContext.d.ts.map +1 -1
- package/es/core/PDFContext.js +54 -3
- package/es/core/PDFContext.js.map +1 -1
- package/es/core/document/PDFCrossRefSection.d.ts +5 -0
- package/es/core/document/PDFCrossRefSection.d.ts.map +1 -1
- package/es/core/document/PDFCrossRefSection.js +16 -0
- package/es/core/document/PDFCrossRefSection.js.map +1 -1
- package/es/core/parser/PDFParser.d.ts +2 -2
- package/es/core/parser/PDFParser.d.ts.map +1 -1
- package/es/core/parser/PDFParser.js +17 -5
- package/es/core/parser/PDFParser.js.map +1 -1
- package/package.json +3 -3
- package/src/api/PDFDocument.ts +53 -0
- package/src/api/PDFDocumentOptions.ts +1 -0
- package/src/core/PDFContext.ts +54 -3
- package/src/core/document/PDFCrossRefSection.ts +24 -0
- package/src/core/parser/PDFParser.ts +15 -3
- package/ts3.4/cjs/api/PDFDocument.d.ts +14 -0
- package/ts3.4/cjs/api/PDFDocumentOptions.d.ts +1 -0
- package/ts3.4/cjs/core/PDFContext.d.ts +9 -1
- package/ts3.4/cjs/core/document/PDFCrossRefSection.d.ts +5 -0
- package/ts3.4/cjs/core/parser/PDFParser.d.ts +2 -2
- package/ts3.4/es/api/PDFDocument.d.ts +14 -0
- package/ts3.4/es/api/PDFDocumentOptions.d.ts +1 -0
- package/ts3.4/es/core/PDFContext.d.ts +9 -1
- package/ts3.4/es/core/document/PDFCrossRefSection.d.ts +5 -0
- package/ts3.4/es/core/parser/PDFParser.d.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PDFParser.d.ts","sourceRoot":"","sources":["../../../src/core/parser/PDFParser.ts"],"names":[],"mappings":"AAiBA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAGhD,OAAO,UAAU,MAAM,eAAe,CAAC;AAKvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAGnD,cAAM,SAAU,SAAQ,eAAe;IACrC,MAAM,CAAC,mBAAmB,aACd,UAAU,mBACH,MAAM,yBACA,OAAO,yBACP,OAAO,eACjB,OAAO,kBACJ,sBAAsB,yBACf,OAAO,
|
|
1
|
+
{"version":3,"file":"PDFParser.d.ts","sourceRoot":"","sources":["../../../src/core/parser/PDFParser.ts"],"names":[],"mappings":"AAiBA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAGhD,OAAO,UAAU,MAAM,eAAe,CAAC;AAKvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAGnD,cAAM,SAAU,SAAQ,eAAe;IACrC,MAAM,CAAC,mBAAmB,aACd,UAAU,mBACH,MAAM,yBACA,OAAO,yBACP,OAAO,eACjB,OAAO,kBACJ,sBAAsB,yBACf,OAAO,4BACJ,OAAO,eAW/B;IAEJ,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAU;IAC/C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAK;gBAGxB,QAAQ,EAAE,UAAU,EACpB,cAAc,SAAW,EACzB,oBAAoB,UAAQ,EAC5B,oBAAoB,UAAQ,EAC5B,UAAU,UAAQ,EAClB,aAAa,CAAC,EAAE,sBAAsB,EACtC,oBAAoB,UAAQ,EAC5B,uBAAuB,UAAQ;IAkB3B,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IA4B1C,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,iBAAiB,CAGvB;YAEY,mBAAmB;IA2CjC,OAAO,CAAC,+BAA+B;YAiCzB,oBAAoB;IAsBlC,OAAO,CAAC,yBAAyB;IAuCjC,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,iBAAiB;YAiBX,oBAAoB;IAWlC;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAqBrB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,uBAAuB;CAWhC;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -19,8 +19,8 @@ import { IsDigit } from '../syntax/Numeric.js';
|
|
|
19
19
|
import { waitForTick } from '../../utils/index.js';
|
|
20
20
|
import PDFNumber from '../objects/PDFNumber.js';
|
|
21
21
|
class PDFParser extends PDFObjectParser {
|
|
22
|
-
constructor(pdfBytes, objectsPerTick = Infinity, throwOnInvalidObject = false, warnOnInvalidObjects = false, capNumbers = false, cryptoFactory, forIncrementalUpdate = false) {
|
|
23
|
-
super(ByteStream.of(pdfBytes), PDFContext.create(), capNumbers, cryptoFactory);
|
|
22
|
+
constructor(pdfBytes, objectsPerTick = Infinity, throwOnInvalidObject = false, warnOnInvalidObjects = false, capNumbers = false, cryptoFactory, forIncrementalUpdate = false, preserveObjectsVersions = false) {
|
|
23
|
+
super(ByteStream.of(pdfBytes), PDFContext.create(preserveObjectsVersions), capNumbers, cryptoFactory);
|
|
24
24
|
this.alreadyParsed = false;
|
|
25
25
|
this.parsedObjects = 0;
|
|
26
26
|
this.shouldWaitForTick = () => {
|
|
@@ -127,7 +127,17 @@ class PDFParser extends PDFObjectParser {
|
|
|
127
127
|
}
|
|
128
128
|
else if (object instanceof PDFRawStream &&
|
|
129
129
|
object.dict.lookup(PDFName.of('Type')) === PDFName.of('XRef')) {
|
|
130
|
-
PDFXRefStreamParser.forStream(object).parseIntoContext();
|
|
130
|
+
const entries = PDFXRefStreamParser.forStream(object).parseIntoContext();
|
|
131
|
+
if (entries.length) {
|
|
132
|
+
const xref = PDFCrossRefSection.createEmpty();
|
|
133
|
+
for (const entry of entries) {
|
|
134
|
+
if (entry.deleted)
|
|
135
|
+
xref.addDeletedEntry(entry.ref, entry.offset);
|
|
136
|
+
else
|
|
137
|
+
xref.addEntry(entry.ref, entry.offset);
|
|
138
|
+
}
|
|
139
|
+
this.context.xrefs.push(xref);
|
|
140
|
+
}
|
|
131
141
|
}
|
|
132
142
|
// always register the object and the ref, to properly handle object numeration
|
|
133
143
|
this.context.assign(ref, object);
|
|
@@ -255,7 +265,9 @@ class PDFParser extends PDFObjectParser {
|
|
|
255
265
|
parseDocumentSection() {
|
|
256
266
|
return __awaiter(this, void 0, void 0, function* () {
|
|
257
267
|
yield this.parseIndirectObjects();
|
|
258
|
-
this.maybeParseCrossRefSection();
|
|
268
|
+
const xref = this.maybeParseCrossRefSection();
|
|
269
|
+
if (xref)
|
|
270
|
+
this.context.xrefs.push(xref);
|
|
259
271
|
this.maybeParseTrailerDict();
|
|
260
272
|
this.maybeParseTrailer();
|
|
261
273
|
// TODO: Can this be done only when needed, to avoid harming performance?
|
|
@@ -312,6 +324,6 @@ class PDFParser extends PDFObjectParser {
|
|
|
312
324
|
}
|
|
313
325
|
}
|
|
314
326
|
}
|
|
315
|
-
PDFParser.forBytesWithOptions = (pdfBytes, objectsPerTick, throwOnInvalidObject, warnOnInvalidObjects, capNumbers, cryptoFactory, forIncrementalUpdate) => new PDFParser(pdfBytes, objectsPerTick, throwOnInvalidObject, warnOnInvalidObjects, capNumbers, cryptoFactory, forIncrementalUpdate);
|
|
327
|
+
PDFParser.forBytesWithOptions = (pdfBytes, objectsPerTick, throwOnInvalidObject, warnOnInvalidObjects, capNumbers, cryptoFactory, forIncrementalUpdate, preserveObjectsVersions) => new PDFParser(pdfBytes, objectsPerTick, throwOnInvalidObject, warnOnInvalidObjects, capNumbers, cryptoFactory, forIncrementalUpdate, preserveObjectsVersions);
|
|
316
328
|
export default PDFParser;
|
|
317
329
|
//# sourceMappingURL=PDFParser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PDFParser.js","sourceRoot":"","sources":["../../../src/core/parser/PDFParser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PDFParser.js","sourceRoot":"","sources":["../../../src/core/parser/PDFParser.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adnsistemas/pdf-lib",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.1",
|
|
4
4
|
"description": "Create and modify PDF files with JavaScript",
|
|
5
5
|
"author": "Andrew Dillon <andrew.dillon.j@gmail.com>",
|
|
6
6
|
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e",
|
|
@@ -46,11 +46,11 @@
|
|
|
46
46
|
],
|
|
47
47
|
"scripts": {
|
|
48
48
|
"release": "yarn release:prep && release-it",
|
|
49
|
-
"release:prep": "yarn clean && yarn lint && yarn typecheck && yarn test && yarn build",
|
|
49
|
+
"release:prep": "yarn clean && yarn lint && yarn typecheck && yarn test && yarn build && coveralls report",
|
|
50
50
|
"get:version": "node --eval 'console.log(require(`./package.json`).version)'",
|
|
51
51
|
"clean": "rimraf ts3.4 build cjs dist es scratchpad/build coverage tsBuildInfo.json apps/node-build apps/node/tsBuildInfo.json isolate*.log flamegraph.html out.pdf",
|
|
52
52
|
"typecheck": "tsc --noEmit --incremental false --tsBuildInfoFile null",
|
|
53
|
-
"test": "jest --config jest.config.js --runInBand",
|
|
53
|
+
"test": "jest --config jest.config.js --runInBand --coverage",
|
|
54
54
|
"testw": "jest --config jest.config.js --watch",
|
|
55
55
|
"testc": "jest --config jest.config.js --coverage && open coverage/index.html",
|
|
56
56
|
"lint-staged": "lint-staged",
|
package/src/api/PDFDocument.ts
CHANGED
|
@@ -92,6 +92,12 @@ export type PDFAttachment = {
|
|
|
92
92
|
modificationDate: Date | undefined;
|
|
93
93
|
};
|
|
94
94
|
|
|
95
|
+
export type PDFObjectVersions = {
|
|
96
|
+
ref: PDFRef;
|
|
97
|
+
actual: PDFObject | undefined;
|
|
98
|
+
previous: PDFObject[];
|
|
99
|
+
};
|
|
100
|
+
|
|
95
101
|
/**
|
|
96
102
|
* Represents a PDF document.
|
|
97
103
|
*/
|
|
@@ -161,6 +167,7 @@ export default class PDFDocument {
|
|
|
161
167
|
capNumbers = false,
|
|
162
168
|
password,
|
|
163
169
|
forIncrementalUpdate = false,
|
|
170
|
+
preserveObjectsVersions = false,
|
|
164
171
|
} = options;
|
|
165
172
|
|
|
166
173
|
assertIs(pdf, 'pdf', ['string', Uint8Array, ArrayBuffer]);
|
|
@@ -170,6 +177,7 @@ export default class PDFDocument {
|
|
|
170
177
|
assertIs(warnOnInvalidObjects, 'warnOnInvalidObjects', ['boolean']);
|
|
171
178
|
assertIs(password, 'password', ['string', 'undefined']);
|
|
172
179
|
assertIs(forIncrementalUpdate, 'forIncrementalUpdate', ['boolean']);
|
|
180
|
+
assertIs(preserveObjectsVersions, 'preserveObjectsVersions', ['boolean']);
|
|
173
181
|
|
|
174
182
|
const bytes = toUint8Array(pdf);
|
|
175
183
|
const context = await PDFParser.forBytesWithOptions(
|
|
@@ -180,6 +188,7 @@ export default class PDFDocument {
|
|
|
180
188
|
capNumbers,
|
|
181
189
|
undefined,
|
|
182
190
|
forIncrementalUpdate,
|
|
191
|
+
preserveObjectsVersions,
|
|
183
192
|
).parseDocument();
|
|
184
193
|
if (
|
|
185
194
|
!!context.lookup(context.trailerInfo.Encrypt) &&
|
|
@@ -200,6 +209,7 @@ export default class PDFDocument {
|
|
|
200
209
|
password,
|
|
201
210
|
),
|
|
202
211
|
forIncrementalUpdate,
|
|
212
|
+
preserveObjectsVersions,
|
|
203
213
|
).parseDocument();
|
|
204
214
|
const pdfDoc = new PDFDocument(decryptedContext, true, updateMetadata);
|
|
205
215
|
if (forIncrementalUpdate) pdfDoc.takeSnapshot();
|
|
@@ -1638,6 +1648,49 @@ export default class PDFDocument {
|
|
|
1638
1648
|
return snapshot;
|
|
1639
1649
|
}
|
|
1640
1650
|
|
|
1651
|
+
/**
|
|
1652
|
+
* Returns the update version of the object as 'actual', and all the previous versions, of the objects
|
|
1653
|
+
* that has changed in the indicated update (or the last one).
|
|
1654
|
+
* If document wasn't load to preserve objects versions, an empty array is returned.
|
|
1655
|
+
* @param {number} lastUpdateMinusX If not the last update, how many updates before the last.
|
|
1656
|
+
* @returns {PDFObjectVersions[]} Objects modified in the update, and previous versions
|
|
1657
|
+
*/
|
|
1658
|
+
getChangedObjects(lastUpdateMinusX: number = 0): PDFObjectVersions[] {
|
|
1659
|
+
if (!this.context.preserveObjectsVersions) return [];
|
|
1660
|
+
if (lastUpdateMinusX < 0) lastUpdateMinusX = 0;
|
|
1661
|
+
const upind = this.context.xrefs.length - lastUpdateMinusX - 1;
|
|
1662
|
+
const entries = this.context.listXrefEntries(upind);
|
|
1663
|
+
if (!entries.length) return [];
|
|
1664
|
+
const changed = new Map<PDFRef, PDFObjectVersions>();
|
|
1665
|
+
for (const entry of entries) {
|
|
1666
|
+
const ref = entry.ref;
|
|
1667
|
+
changed.set(ref, {
|
|
1668
|
+
ref,
|
|
1669
|
+
actual: entry.deleted ? undefined : this.context.lookup(ref),
|
|
1670
|
+
previous: this.context.getObjectVersions(ref),
|
|
1671
|
+
});
|
|
1672
|
+
}
|
|
1673
|
+
// if not the las update, then check objects later modified and adjust PDFObjectVersions accordingly
|
|
1674
|
+
if (!lastUpdateMinusX)
|
|
1675
|
+
return Array.from(changed.entries()).map((value) => value[1]);
|
|
1676
|
+
while (lastUpdateMinusX) {
|
|
1677
|
+
lastUpdateMinusX -= 1;
|
|
1678
|
+
const upind = this.context.xrefs.length - lastUpdateMinusX - 1;
|
|
1679
|
+
const nentries = this.context.listXrefEntries(upind);
|
|
1680
|
+
for (const nentry of nentries) {
|
|
1681
|
+
const oce = changed.get(nentry.ref);
|
|
1682
|
+
if (oce && oce.actual) {
|
|
1683
|
+
oce.actual = oce.previous[0];
|
|
1684
|
+
oce.previous = oce.previous.slice(1);
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1687
|
+
}
|
|
1688
|
+
// if PDF has errors, it may happen to end with objects that has no current, nor previous versions
|
|
1689
|
+
return Array.from(changed.entries())
|
|
1690
|
+
.map((value) => value[1])
|
|
1691
|
+
.filter((ov) => ov.actual || ov.previous.length);
|
|
1692
|
+
}
|
|
1693
|
+
|
|
1641
1694
|
private async prepareForSave(options: SaveOptions): Promise<void> {
|
|
1642
1695
|
const { addDefaultPage = true, updateFieldAppearances = true } = options;
|
|
1643
1696
|
|
package/src/core/PDFContext.ts
CHANGED
|
@@ -21,6 +21,8 @@ import PDFContentStream from './structures/PDFContentStream';
|
|
|
21
21
|
import PDFSecurity from './security/PDFSecurity';
|
|
22
22
|
import { typedArrayFor } from '../utils';
|
|
23
23
|
import { SimpleRNG } from '../utils/rng';
|
|
24
|
+
import PDFCrossRefSection from './document/PDFCrossRefSection';
|
|
25
|
+
import type { Entry } from './document/PDFCrossRefSection';
|
|
24
26
|
|
|
25
27
|
type LookupKey = PDFRef | PDFObject | undefined;
|
|
26
28
|
|
|
@@ -55,7 +57,8 @@ const byAscendingObjectNumber = (
|
|
|
55
57
|
|
|
56
58
|
class PDFContext {
|
|
57
59
|
isDecrypted = true;
|
|
58
|
-
static create = (
|
|
60
|
+
static create = (withObjectVersions: boolean = false) =>
|
|
61
|
+
new PDFContext(withObjectVersions);
|
|
59
62
|
|
|
60
63
|
largestObjectNumber: number;
|
|
61
64
|
header: PDFHeader;
|
|
@@ -74,20 +77,30 @@ class PDFContext {
|
|
|
74
77
|
originalBytes?: Uint8Array;
|
|
75
78
|
};
|
|
76
79
|
snapshot?: DocumentSnapshot;
|
|
80
|
+
xrefs: PDFCrossRefSection[] = [];
|
|
81
|
+
private _preserveObjectsVersions: boolean;
|
|
82
|
+
public get preserveObjectsVersions(): boolean {
|
|
83
|
+
return this._preserveObjectsVersions;
|
|
84
|
+
}
|
|
77
85
|
|
|
78
86
|
security?: PDFSecurity;
|
|
79
87
|
|
|
80
88
|
private readonly indirectObjects: Map<PDFRef, PDFObject>;
|
|
89
|
+
private readonly objectsPreviousVersions: Map<PDFRef, PDFObject[]>;
|
|
81
90
|
|
|
82
91
|
private pushGraphicsStateContentStreamRef?: PDFRef;
|
|
83
92
|
private popGraphicsStateContentStreamRef?: PDFRef;
|
|
84
93
|
|
|
85
|
-
private constructor() {
|
|
94
|
+
private constructor(preserveObjectsVersions?: boolean) {
|
|
95
|
+
this._preserveObjectsVersions = preserveObjectsVersions
|
|
96
|
+
? preserveObjectsVersions
|
|
97
|
+
: false;
|
|
86
98
|
this.largestObjectNumber = 0;
|
|
87
99
|
this.header = PDFHeader.forVersion(1, 7);
|
|
88
100
|
this.trailerInfo = {};
|
|
89
101
|
|
|
90
102
|
this.indirectObjects = new Map();
|
|
103
|
+
this.objectsPreviousVersions = new Map();
|
|
91
104
|
this.rng = SimpleRNG.withSeed(1);
|
|
92
105
|
this.pdfFileDetails = {
|
|
93
106
|
pdfSize: 0,
|
|
@@ -97,6 +110,17 @@ class PDFContext {
|
|
|
97
110
|
}
|
|
98
111
|
|
|
99
112
|
assign(ref: PDFRef, object: PDFObject): void {
|
|
113
|
+
if (this.preserveObjectsVersions) {
|
|
114
|
+
const prevOV = this.indirectObjects.get(ref);
|
|
115
|
+
if (prevOV) {
|
|
116
|
+
const prevList = this.objectsPreviousVersions.get(ref);
|
|
117
|
+
if (!prevList) {
|
|
118
|
+
this.objectsPreviousVersions.set(ref, [prevOV]);
|
|
119
|
+
} else {
|
|
120
|
+
prevList.unshift(prevOV);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
100
124
|
this.indirectObjects.set(ref, object);
|
|
101
125
|
if (ref.objectNumber > this.largestObjectNumber) {
|
|
102
126
|
this.largestObjectNumber = ref.objectNumber;
|
|
@@ -105,7 +129,9 @@ class PDFContext {
|
|
|
105
129
|
|
|
106
130
|
nextRef(): PDFRef {
|
|
107
131
|
this.largestObjectNumber += 1;
|
|
108
|
-
|
|
132
|
+
const ref = PDFRef.of(this.largestObjectNumber);
|
|
133
|
+
if (this.snapshot) this.snapshot.markRefForSave(ref);
|
|
134
|
+
return ref;
|
|
109
135
|
}
|
|
110
136
|
|
|
111
137
|
register(object: PDFObject): PDFRef {
|
|
@@ -116,6 +142,18 @@ class PDFContext {
|
|
|
116
142
|
|
|
117
143
|
delete(ref: PDFRef): boolean {
|
|
118
144
|
if (this.snapshot) this.snapshot.markDeletedRef(ref);
|
|
145
|
+
if (this.preserveObjectsVersions) {
|
|
146
|
+
const object = this.indirectObjects.get(ref);
|
|
147
|
+
if (object) {
|
|
148
|
+
// check is not already deleted
|
|
149
|
+
const verlist = this.objectsPreviousVersions.get(ref);
|
|
150
|
+
if (verlist) {
|
|
151
|
+
verlist.unshift(object);
|
|
152
|
+
} else {
|
|
153
|
+
this.objectsPreviousVersions.set(ref, [object]);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
119
157
|
return this.indirectObjects.delete(ref);
|
|
120
158
|
}
|
|
121
159
|
|
|
@@ -393,6 +431,19 @@ class PDFContext {
|
|
|
393
431
|
registerObjectChange(obj: PDFObject) {
|
|
394
432
|
if (this.snapshot) this.snapshot.markObjForSave(obj);
|
|
395
433
|
}
|
|
434
|
+
|
|
435
|
+
getObjectVersions(ref: PDFRef): PDFObject[] {
|
|
436
|
+
if (!this.preserveObjectsVersions) return [];
|
|
437
|
+
const list = this.objectsPreviousVersions.get(ref);
|
|
438
|
+
if (list) return list;
|
|
439
|
+
return [];
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
listXrefEntries(xrefIndex: number = -1): Entry[] {
|
|
443
|
+
if (xrefIndex < 0) xrefIndex = this.xrefs.length - 1;
|
|
444
|
+
if (xrefIndex < 0 || xrefIndex >= this.xrefs.length) return [];
|
|
445
|
+
return this.xrefs[xrefIndex].listRefs();
|
|
446
|
+
}
|
|
396
447
|
}
|
|
397
448
|
|
|
398
449
|
export default PDFContext;
|
|
@@ -212,6 +212,30 @@ class PDFCrossRefSection {
|
|
|
212
212
|
this.chunkLength += 1;
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Returns all the entries in the XREF section, except the first one (object == 0)
|
|
218
|
+
* @returns {Entry[]} All the entries in the XREF section
|
|
219
|
+
*/
|
|
220
|
+
listRefs(): Entry[] {
|
|
221
|
+
const refList: Entry[] = [];
|
|
222
|
+
for (
|
|
223
|
+
let rangeIdx = 0, rangeLen = this.subsections.length;
|
|
224
|
+
rangeIdx < rangeLen;
|
|
225
|
+
rangeIdx++
|
|
226
|
+
) {
|
|
227
|
+
const range = this.subsections[rangeIdx];
|
|
228
|
+
for (
|
|
229
|
+
let entryIdx = 0, entryLen = range.length;
|
|
230
|
+
entryIdx < entryLen;
|
|
231
|
+
entryIdx++
|
|
232
|
+
) {
|
|
233
|
+
const entry = range[entryIdx];
|
|
234
|
+
if (entry.ref.objectNumber) refList.push(entry);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return refList;
|
|
238
|
+
}
|
|
215
239
|
}
|
|
216
240
|
|
|
217
241
|
export default PDFCrossRefSection;
|
|
@@ -35,6 +35,7 @@ class PDFParser extends PDFObjectParser {
|
|
|
35
35
|
capNumbers?: boolean,
|
|
36
36
|
cryptoFactory?: CipherTransformFactory,
|
|
37
37
|
forIncrementalUpdate?: boolean,
|
|
38
|
+
preserveObjectsVersions?: boolean,
|
|
38
39
|
) =>
|
|
39
40
|
new PDFParser(
|
|
40
41
|
pdfBytes,
|
|
@@ -44,6 +45,7 @@ class PDFParser extends PDFObjectParser {
|
|
|
44
45
|
capNumbers,
|
|
45
46
|
cryptoFactory,
|
|
46
47
|
forIncrementalUpdate,
|
|
48
|
+
preserveObjectsVersions,
|
|
47
49
|
);
|
|
48
50
|
|
|
49
51
|
private readonly objectsPerTick: number;
|
|
@@ -60,10 +62,11 @@ class PDFParser extends PDFObjectParser {
|
|
|
60
62
|
capNumbers = false,
|
|
61
63
|
cryptoFactory?: CipherTransformFactory,
|
|
62
64
|
forIncrementalUpdate = false,
|
|
65
|
+
preserveObjectsVersions = false,
|
|
63
66
|
) {
|
|
64
67
|
super(
|
|
65
68
|
ByteStream.of(pdfBytes),
|
|
66
|
-
PDFContext.create(),
|
|
69
|
+
PDFContext.create(preserveObjectsVersions),
|
|
67
70
|
capNumbers,
|
|
68
71
|
cryptoFactory,
|
|
69
72
|
);
|
|
@@ -196,7 +199,15 @@ class PDFParser extends PDFObjectParser {
|
|
|
196
199
|
object instanceof PDFRawStream &&
|
|
197
200
|
object.dict.lookup(PDFName.of('Type')) === PDFName.of('XRef')
|
|
198
201
|
) {
|
|
199
|
-
PDFXRefStreamParser.forStream(object).parseIntoContext();
|
|
202
|
+
const entries = PDFXRefStreamParser.forStream(object).parseIntoContext();
|
|
203
|
+
if (entries.length) {
|
|
204
|
+
const xref = PDFCrossRefSection.createEmpty();
|
|
205
|
+
for (const entry of entries) {
|
|
206
|
+
if (entry.deleted) xref.addDeletedEntry(entry.ref, entry.offset);
|
|
207
|
+
else xref.addEntry(entry.ref, entry.offset);
|
|
208
|
+
}
|
|
209
|
+
this.context.xrefs.push(xref);
|
|
210
|
+
}
|
|
200
211
|
}
|
|
201
212
|
// always register the object and the ref, to properly handle object numeration
|
|
202
213
|
this.context.assign(ref, object);
|
|
@@ -340,7 +351,8 @@ class PDFParser extends PDFObjectParser {
|
|
|
340
351
|
|
|
341
352
|
private async parseDocumentSection(): Promise<void> {
|
|
342
353
|
await this.parseIndirectObjects();
|
|
343
|
-
this.maybeParseCrossRefSection();
|
|
354
|
+
const xref = this.maybeParseCrossRefSection();
|
|
355
|
+
if (xref) this.context.xrefs.push(xref);
|
|
344
356
|
this.maybeParseTrailerDict();
|
|
345
357
|
this.maybeParseTrailer();
|
|
346
358
|
|
|
@@ -6,6 +6,7 @@ import PDFForm from './form/PDFForm';
|
|
|
6
6
|
import { StandardFonts } from './StandardFonts';
|
|
7
7
|
import { PageBoundingBox, PDFCatalog, PDFContext } from '../core';
|
|
8
8
|
import { AttachmentOptions, SaveOptions, Base64SaveOptions, LoadOptions, CreateOptions, EmbedFontOptions, SetTitleOptions, IncrementalSaveOptions } from './PDFDocumentOptions';
|
|
9
|
+
import PDFObject from '../core/objects/PDFObject';
|
|
9
10
|
import PDFRef from '../core/objects/PDFRef';
|
|
10
11
|
import { Fontkit } from '../types/fontkit';
|
|
11
12
|
import { TransformationMatrix } from '../types/matrix';
|
|
@@ -22,6 +23,11 @@ export type PDFAttachment = {
|
|
|
22
23
|
creationDate: Date | undefined;
|
|
23
24
|
modificationDate: Date | undefined;
|
|
24
25
|
};
|
|
26
|
+
export type PDFObjectVersions = {
|
|
27
|
+
ref: PDFRef;
|
|
28
|
+
actual: PDFObject | undefined;
|
|
29
|
+
previous: PDFObject[];
|
|
30
|
+
};
|
|
25
31
|
/**
|
|
26
32
|
* Represents a PDF document.
|
|
27
33
|
*/
|
|
@@ -828,6 +834,14 @@ export default class PDFDocument {
|
|
|
828
834
|
saveAsBase64(options?: Base64SaveOptions): Promise<string>;
|
|
829
835
|
findPageForAnnotationRef(ref: PDFRef): PDFPage | undefined;
|
|
830
836
|
takeSnapshot(): DocumentSnapshot;
|
|
837
|
+
/**
|
|
838
|
+
* Returns the update version of the object as 'actual', and all the previous versions, of the objects
|
|
839
|
+
* that has changed in the indicated update (or the last one).
|
|
840
|
+
* If document wasn't load to preserve objects versions, an empty array is returned.
|
|
841
|
+
* @param {number} lastUpdateMinusX If not the last update, how many updates before the last.
|
|
842
|
+
* @returns {PDFObjectVersions[]} Objects modified in the update, and previous versions
|
|
843
|
+
*/
|
|
844
|
+
getChangedObjects(lastUpdateMinusX?: number): PDFObjectVersions[];
|
|
831
845
|
private prepareForSave;
|
|
832
846
|
private embedAll;
|
|
833
847
|
private updateInfoDict;
|
|
@@ -16,6 +16,8 @@ import PDFOperator from './operators/PDFOperator';
|
|
|
16
16
|
import PDFContentStream from './structures/PDFContentStream';
|
|
17
17
|
import PDFSecurity from './security/PDFSecurity';
|
|
18
18
|
import { SimpleRNG } from '../utils/rng';
|
|
19
|
+
import PDFCrossRefSection from './document/PDFCrossRefSection';
|
|
20
|
+
import { Entry } from './document/PDFCrossRefSection';
|
|
19
21
|
type LookupKey = PDFRef | PDFObject | undefined;
|
|
20
22
|
interface LiteralObject {
|
|
21
23
|
[name: string]: Literal | PDFObject;
|
|
@@ -32,7 +34,7 @@ interface LiteralConfig {
|
|
|
32
34
|
}
|
|
33
35
|
declare class PDFContext {
|
|
34
36
|
isDecrypted: boolean;
|
|
35
|
-
static create: () => PDFContext;
|
|
37
|
+
static create: (withObjectVersions?: boolean) => PDFContext;
|
|
36
38
|
largestObjectNumber: number;
|
|
37
39
|
header: PDFHeader;
|
|
38
40
|
trailerInfo: {
|
|
@@ -50,8 +52,12 @@ declare class PDFContext {
|
|
|
50
52
|
originalBytes?: Uint8Array;
|
|
51
53
|
};
|
|
52
54
|
snapshot?: DocumentSnapshot;
|
|
55
|
+
xrefs: PDFCrossRefSection[];
|
|
56
|
+
private _preserveObjectsVersions;
|
|
57
|
+
readonly preserveObjectsVersions: boolean;
|
|
53
58
|
security?: PDFSecurity;
|
|
54
59
|
private readonly indirectObjects;
|
|
60
|
+
private readonly objectsPreviousVersions;
|
|
55
61
|
private pushGraphicsStateContentStreamRef?;
|
|
56
62
|
private popGraphicsStateContentStreamRef?;
|
|
57
63
|
private constructor();
|
|
@@ -113,6 +119,8 @@ declare class PDFContext {
|
|
|
113
119
|
getPopGraphicsStateContentStream(): PDFRef;
|
|
114
120
|
addRandomSuffix(prefix: string, suffixLength?: number): string;
|
|
115
121
|
registerObjectChange(obj: PDFObject): void;
|
|
122
|
+
getObjectVersions(ref: PDFRef): PDFObject[];
|
|
123
|
+
listXrefEntries(xrefIndex?: number): Entry[];
|
|
116
124
|
}
|
|
117
125
|
export default PDFContext;
|
|
118
126
|
//# sourceMappingURL=PDFContext.d.ts.map
|
|
@@ -23,6 +23,11 @@ declare class PDFCrossRefSection {
|
|
|
23
23
|
private copySubsectionsIntoBuffer;
|
|
24
24
|
private copyEntriesIntoBuffer;
|
|
25
25
|
private append;
|
|
26
|
+
/**
|
|
27
|
+
* Returns all the entries in the XREF section, except the first one (object == 0)
|
|
28
|
+
* @returns {Entry[]} All the entries in the XREF section
|
|
29
|
+
*/
|
|
30
|
+
listRefs(): Entry[];
|
|
26
31
|
}
|
|
27
32
|
export default PDFCrossRefSection;
|
|
28
33
|
//# sourceMappingURL=PDFCrossRefSection.d.ts.map
|
|
@@ -2,13 +2,13 @@ import PDFObjectParser from './PDFObjectParser';
|
|
|
2
2
|
import PDFContext from '../PDFContext';
|
|
3
3
|
import { CipherTransformFactory } from '../crypto';
|
|
4
4
|
declare class PDFParser extends PDFObjectParser {
|
|
5
|
-
static forBytesWithOptions: (pdfBytes: Uint8Array, objectsPerTick?: number, throwOnInvalidObject?: boolean, warnOnInvalidObjects?: boolean, capNumbers?: boolean, cryptoFactory?: CipherTransformFactory, forIncrementalUpdate?: boolean) => PDFParser;
|
|
5
|
+
static forBytesWithOptions: (pdfBytes: Uint8Array, objectsPerTick?: number, throwOnInvalidObject?: boolean, warnOnInvalidObjects?: boolean, capNumbers?: boolean, cryptoFactory?: CipherTransformFactory, forIncrementalUpdate?: boolean, preserveObjectsVersions?: boolean) => PDFParser;
|
|
6
6
|
private readonly objectsPerTick;
|
|
7
7
|
private readonly throwOnInvalidObject;
|
|
8
8
|
private readonly warnOnInvalidObjects;
|
|
9
9
|
private alreadyParsed;
|
|
10
10
|
private parsedObjects;
|
|
11
|
-
constructor(pdfBytes: Uint8Array, objectsPerTick?: number, throwOnInvalidObject?: boolean, warnOnInvalidObjects?: boolean, capNumbers?: boolean, cryptoFactory?: CipherTransformFactory, forIncrementalUpdate?: boolean);
|
|
11
|
+
constructor(pdfBytes: Uint8Array, objectsPerTick?: number, throwOnInvalidObject?: boolean, warnOnInvalidObjects?: boolean, capNumbers?: boolean, cryptoFactory?: CipherTransformFactory, forIncrementalUpdate?: boolean, preserveObjectsVersions?: boolean);
|
|
12
12
|
parseDocument(): Promise<PDFContext>;
|
|
13
13
|
private maybeRecoverRoot;
|
|
14
14
|
private parseHeader;
|
|
@@ -6,6 +6,7 @@ import PDFForm from './form/PDFForm';
|
|
|
6
6
|
import { StandardFonts } from './StandardFonts';
|
|
7
7
|
import { PageBoundingBox, PDFCatalog, PDFContext } from '../core';
|
|
8
8
|
import { AttachmentOptions, SaveOptions, Base64SaveOptions, LoadOptions, CreateOptions, EmbedFontOptions, SetTitleOptions, IncrementalSaveOptions } from './PDFDocumentOptions';
|
|
9
|
+
import PDFObject from '../core/objects/PDFObject';
|
|
9
10
|
import PDFRef from '../core/objects/PDFRef';
|
|
10
11
|
import { Fontkit } from '../types/fontkit';
|
|
11
12
|
import { TransformationMatrix } from '../types/matrix';
|
|
@@ -22,6 +23,11 @@ export type PDFAttachment = {
|
|
|
22
23
|
creationDate: Date | undefined;
|
|
23
24
|
modificationDate: Date | undefined;
|
|
24
25
|
};
|
|
26
|
+
export type PDFObjectVersions = {
|
|
27
|
+
ref: PDFRef;
|
|
28
|
+
actual: PDFObject | undefined;
|
|
29
|
+
previous: PDFObject[];
|
|
30
|
+
};
|
|
25
31
|
/**
|
|
26
32
|
* Represents a PDF document.
|
|
27
33
|
*/
|
|
@@ -828,6 +834,14 @@ export default class PDFDocument {
|
|
|
828
834
|
saveAsBase64(options?: Base64SaveOptions): Promise<string>;
|
|
829
835
|
findPageForAnnotationRef(ref: PDFRef): PDFPage | undefined;
|
|
830
836
|
takeSnapshot(): DocumentSnapshot;
|
|
837
|
+
/**
|
|
838
|
+
* Returns the update version of the object as 'actual', and all the previous versions, of the objects
|
|
839
|
+
* that has changed in the indicated update (or the last one).
|
|
840
|
+
* If document wasn't load to preserve objects versions, an empty array is returned.
|
|
841
|
+
* @param {number} lastUpdateMinusX If not the last update, how many updates before the last.
|
|
842
|
+
* @returns {PDFObjectVersions[]} Objects modified in the update, and previous versions
|
|
843
|
+
*/
|
|
844
|
+
getChangedObjects(lastUpdateMinusX?: number): PDFObjectVersions[];
|
|
831
845
|
private prepareForSave;
|
|
832
846
|
private embedAll;
|
|
833
847
|
private updateInfoDict;
|
|
@@ -16,6 +16,8 @@ import PDFOperator from './operators/PDFOperator';
|
|
|
16
16
|
import PDFContentStream from './structures/PDFContentStream';
|
|
17
17
|
import PDFSecurity from './security/PDFSecurity';
|
|
18
18
|
import { SimpleRNG } from '../utils/rng';
|
|
19
|
+
import PDFCrossRefSection from './document/PDFCrossRefSection';
|
|
20
|
+
import { Entry } from './document/PDFCrossRefSection';
|
|
19
21
|
type LookupKey = PDFRef | PDFObject | undefined;
|
|
20
22
|
interface LiteralObject {
|
|
21
23
|
[name: string]: Literal | PDFObject;
|
|
@@ -32,7 +34,7 @@ interface LiteralConfig {
|
|
|
32
34
|
}
|
|
33
35
|
declare class PDFContext {
|
|
34
36
|
isDecrypted: boolean;
|
|
35
|
-
static create: () => PDFContext;
|
|
37
|
+
static create: (withObjectVersions?: boolean) => PDFContext;
|
|
36
38
|
largestObjectNumber: number;
|
|
37
39
|
header: PDFHeader;
|
|
38
40
|
trailerInfo: {
|
|
@@ -50,8 +52,12 @@ declare class PDFContext {
|
|
|
50
52
|
originalBytes?: Uint8Array;
|
|
51
53
|
};
|
|
52
54
|
snapshot?: DocumentSnapshot;
|
|
55
|
+
xrefs: PDFCrossRefSection[];
|
|
56
|
+
private _preserveObjectsVersions;
|
|
57
|
+
readonly preserveObjectsVersions: boolean;
|
|
53
58
|
security?: PDFSecurity;
|
|
54
59
|
private readonly indirectObjects;
|
|
60
|
+
private readonly objectsPreviousVersions;
|
|
55
61
|
private pushGraphicsStateContentStreamRef?;
|
|
56
62
|
private popGraphicsStateContentStreamRef?;
|
|
57
63
|
private constructor();
|
|
@@ -113,6 +119,8 @@ declare class PDFContext {
|
|
|
113
119
|
getPopGraphicsStateContentStream(): PDFRef;
|
|
114
120
|
addRandomSuffix(prefix: string, suffixLength?: number): string;
|
|
115
121
|
registerObjectChange(obj: PDFObject): void;
|
|
122
|
+
getObjectVersions(ref: PDFRef): PDFObject[];
|
|
123
|
+
listXrefEntries(xrefIndex?: number): Entry[];
|
|
116
124
|
}
|
|
117
125
|
export default PDFContext;
|
|
118
126
|
//# sourceMappingURL=PDFContext.d.ts.map
|
|
@@ -23,6 +23,11 @@ declare class PDFCrossRefSection {
|
|
|
23
23
|
private copySubsectionsIntoBuffer;
|
|
24
24
|
private copyEntriesIntoBuffer;
|
|
25
25
|
private append;
|
|
26
|
+
/**
|
|
27
|
+
* Returns all the entries in the XREF section, except the first one (object == 0)
|
|
28
|
+
* @returns {Entry[]} All the entries in the XREF section
|
|
29
|
+
*/
|
|
30
|
+
listRefs(): Entry[];
|
|
26
31
|
}
|
|
27
32
|
export default PDFCrossRefSection;
|
|
28
33
|
//# sourceMappingURL=PDFCrossRefSection.d.ts.map
|