@pdfme/pdf-lib 1.18.1 → 1.18.3
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/cjs/api/PDFDocument.js +195 -225
- package/cjs/api/PDFDocument.js.map +1 -1
- package/cjs/api/PDFEmbeddedFile.js +30 -33
- package/cjs/api/PDFEmbeddedFile.js.map +1 -1
- package/cjs/api/PDFEmbeddedPage.js +5 -7
- package/cjs/api/PDFEmbeddedPage.js.map +1 -1
- package/cjs/api/PDFFont.js +6 -8
- package/cjs/api/PDFFont.js.map +1 -1
- package/cjs/api/PDFImage.js +14 -16
- package/cjs/api/PDFImage.js.map +1 -1
- package/cjs/api/PDFJavaScript.js +19 -22
- package/cjs/api/PDFJavaScript.js.map +1 -1
- package/cjs/api/PDFPage.d.ts.map +1 -1
- package/cjs/api/PDFPage.js +26 -16
- package/cjs/api/PDFPage.js.map +1 -1
- package/cjs/api/PDFPageOptions.d.ts +14 -8
- package/cjs/api/PDFPageOptions.d.ts.map +1 -1
- package/cjs/api/PDFPageOptions.js.map +1 -1
- package/cjs/api/form/PDFField.js +1 -1
- package/cjs/api/form/PDFField.js.map +1 -1
- package/cjs/api/form/PDFForm.js +1 -1
- package/cjs/api/form/PDFForm.js.map +1 -1
- package/cjs/api/form/appearances.js +56 -16
- package/cjs/api/form/appearances.js.map +1 -1
- package/cjs/api/operations.d.ts +15 -0
- package/cjs/api/operations.d.ts.map +1 -1
- package/cjs/api/operations.js +22 -0
- package/cjs/api/operations.js.map +1 -1
- package/cjs/api/svg.d.ts +7 -1
- package/cjs/api/svg.d.ts.map +1 -1
- package/cjs/api/svg.js +332 -1016
- package/cjs/api/svg.js.map +1 -1
- package/cjs/core/PDFContext.js +11 -2
- package/cjs/core/PDFContext.js.map +1 -1
- package/cjs/core/embedders/CustomFontEmbedder.js +62 -74
- package/cjs/core/embedders/CustomFontEmbedder.js.map +1 -1
- package/cjs/core/embedders/CustomFontSubsetEmbedder.js +3 -5
- package/cjs/core/embedders/CustomFontSubsetEmbedder.js.map +1 -1
- package/cjs/core/embedders/FileEmbedder.js +30 -32
- package/cjs/core/embedders/FileEmbedder.js.map +1 -1
- package/cjs/core/embedders/JavaScriptEmbedder.js +12 -14
- package/cjs/core/embedders/JavaScriptEmbedder.js.map +1 -1
- package/cjs/core/embedders/JpegEmbedder.js +54 -59
- package/cjs/core/embedders/JpegEmbedder.js.map +1 -1
- package/cjs/core/embedders/PDFPageEmbedder.js +22 -26
- package/cjs/core/embedders/PDFPageEmbedder.js.map +1 -1
- package/cjs/core/embedders/PngEmbedder.js +20 -25
- package/cjs/core/embedders/PngEmbedder.js.map +1 -1
- package/cjs/core/parser/PDFObjectStreamParser.js +15 -17
- package/cjs/core/parser/PDFObjectStreamParser.js.map +1 -1
- package/cjs/core/parser/PDFParser.js +66 -74
- package/cjs/core/parser/PDFParser.js.map +1 -1
- package/cjs/core/writers/PDFStreamWriter.js +53 -55
- package/cjs/core/writers/PDFStreamWriter.js.map +1 -1
- package/cjs/core/writers/PDFWriter.js +62 -66
- package/cjs/core/writers/PDFWriter.js.map +1 -1
- package/cjs/types/index.d.ts +4 -4
- package/cjs/types/index.d.ts.map +1 -1
- package/dist/pdf-lib.esm.js +1123 -2589
- package/dist/pdf-lib.esm.js.map +1 -1
- package/dist/pdf-lib.esm.min.js +1 -15
- package/dist/pdf-lib.esm.min.js.map +1 -1
- package/dist/pdf-lib.js +1123 -2589
- package/dist/pdf-lib.js.map +1 -1
- package/dist/pdf-lib.min.js +1 -15
- package/dist/pdf-lib.min.js.map +1 -1
- package/es/api/PDFDocument.js +195 -226
- package/es/api/PDFDocument.js.map +1 -1
- package/es/api/PDFEmbeddedFile.js +30 -33
- package/es/api/PDFEmbeddedFile.js.map +1 -1
- package/es/api/PDFEmbeddedPage.js +5 -8
- package/es/api/PDFEmbeddedPage.js.map +1 -1
- package/es/api/PDFFont.js +6 -9
- package/es/api/PDFFont.js.map +1 -1
- package/es/api/PDFImage.js +14 -17
- package/es/api/PDFImage.js.map +1 -1
- package/es/api/PDFJavaScript.js +19 -22
- package/es/api/PDFJavaScript.js.map +1 -1
- package/es/api/PDFPage.d.ts.map +1 -1
- package/es/api/PDFPage.js +26 -17
- package/es/api/PDFPage.js.map +1 -1
- package/es/api/PDFPageOptions.d.ts +14 -8
- package/es/api/PDFPageOptions.d.ts.map +1 -1
- package/es/api/PDFPageOptions.js.map +1 -1
- package/es/api/form/PDFField.js +1 -1
- package/es/api/form/PDFField.js.map +1 -1
- package/es/api/form/PDFForm.js +1 -1
- package/es/api/form/PDFForm.js.map +1 -1
- package/es/api/form/appearances.js +56 -16
- package/es/api/form/appearances.js.map +1 -1
- package/es/api/operations.d.ts +15 -0
- package/es/api/operations.d.ts.map +1 -1
- package/es/api/operations.js +23 -1
- package/es/api/operations.js.map +1 -1
- package/es/api/svg.d.ts +7 -1
- package/es/api/svg.d.ts.map +1 -1
- package/es/api/svg.js +333 -1017
- package/es/api/svg.js.map +1 -1
- package/es/core/PDFContext.js +11 -2
- package/es/core/PDFContext.js.map +1 -1
- package/es/core/embedders/CustomFontEmbedder.js +62 -75
- package/es/core/embedders/CustomFontEmbedder.js.map +1 -1
- package/es/core/embedders/CustomFontSubsetEmbedder.js +3 -6
- package/es/core/embedders/CustomFontSubsetEmbedder.js.map +1 -1
- package/es/core/embedders/FileEmbedder.js +30 -33
- package/es/core/embedders/FileEmbedder.js.map +1 -1
- package/es/core/embedders/JavaScriptEmbedder.js +12 -15
- package/es/core/embedders/JavaScriptEmbedder.js.map +1 -1
- package/es/core/embedders/JpegEmbedder.js +54 -59
- package/es/core/embedders/JpegEmbedder.js.map +1 -1
- package/es/core/embedders/PDFPageEmbedder.js +22 -27
- package/es/core/embedders/PDFPageEmbedder.js.map +1 -1
- package/es/core/embedders/PngEmbedder.js +20 -25
- package/es/core/embedders/PngEmbedder.js.map +1 -1
- package/es/core/parser/PDFObjectStreamParser.js +15 -18
- package/es/core/parser/PDFObjectStreamParser.js.map +1 -1
- package/es/core/parser/PDFParser.js +66 -75
- package/es/core/parser/PDFParser.js.map +1 -1
- package/es/core/writers/PDFStreamWriter.js +53 -56
- package/es/core/writers/PDFStreamWriter.js.map +1 -1
- package/es/core/writers/PDFWriter.js +62 -67
- package/es/core/writers/PDFWriter.js.map +1 -1
- package/es/types/index.d.ts +4 -4
- package/es/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api/PDFPage.ts +12 -0
- package/src/api/PDFPageOptions.ts +14 -8
- package/src/api/operations.ts +45 -3
- package/src/api/svg.ts +305 -1086
- package/src/types/index.ts +6 -1
- package/ts3.4/cjs/api/PDFPageOptions.d.ts +14 -8
- package/ts3.4/cjs/api/operations.d.ts +15 -0
- package/ts3.4/cjs/api/svg.d.ts +7 -1
- package/ts3.4/cjs/types/index.d.ts +4 -4
- package/ts3.4/es/api/PDFPageOptions.d.ts +14 -8
- package/ts3.4/es/api/operations.d.ts +15 -0
- package/ts3.4/es/api/svg.d.ts +7 -1
- package/ts3.4/es/types/index.d.ts +4 -4
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
3
|
// prettier-ignore
|
|
5
4
|
const MARKERS = [
|
|
6
5
|
0xffc0, 0xffc1, 0xffc2,
|
|
@@ -33,67 +32,63 @@ class JpegEmbedder {
|
|
|
33
32
|
this.height = height;
|
|
34
33
|
this.colorSpace = colorSpace;
|
|
35
34
|
}
|
|
36
|
-
static for(imageData) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
marker = dataView.getUint16(pos);
|
|
46
|
-
pos += 2;
|
|
47
|
-
if (MARKERS.includes(marker))
|
|
48
|
-
break;
|
|
49
|
-
pos += dataView.getUint16(pos);
|
|
50
|
-
}
|
|
51
|
-
if (!MARKERS.includes(marker))
|
|
52
|
-
throw new Error('Invalid JPEG');
|
|
35
|
+
static async for(imageData) {
|
|
36
|
+
const dataView = new DataView(imageData.buffer);
|
|
37
|
+
const soi = dataView.getUint16(0);
|
|
38
|
+
if (soi !== 0xffd8)
|
|
39
|
+
throw new Error('SOI not found in JPEG');
|
|
40
|
+
let pos = 2;
|
|
41
|
+
let marker;
|
|
42
|
+
while (pos < dataView.byteLength) {
|
|
43
|
+
marker = dataView.getUint16(pos);
|
|
53
44
|
pos += 2;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
pos +=
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
45
|
+
if (MARKERS.includes(marker))
|
|
46
|
+
break;
|
|
47
|
+
pos += dataView.getUint16(pos);
|
|
48
|
+
}
|
|
49
|
+
if (!MARKERS.includes(marker))
|
|
50
|
+
throw new Error('Invalid JPEG');
|
|
51
|
+
pos += 2;
|
|
52
|
+
const bitsPerComponent = dataView.getUint8(pos++);
|
|
53
|
+
const height = dataView.getUint16(pos);
|
|
54
|
+
pos += 2;
|
|
55
|
+
const width = dataView.getUint16(pos);
|
|
56
|
+
pos += 2;
|
|
57
|
+
const channelByte = dataView.getUint8(pos++);
|
|
58
|
+
const channelName = ChannelToColorSpace[channelByte];
|
|
59
|
+
if (!channelName)
|
|
60
|
+
throw new Error('Unknown JPEG channel.');
|
|
61
|
+
const colorSpace = channelName;
|
|
62
|
+
return new JpegEmbedder(imageData, bitsPerComponent, width, height, colorSpace);
|
|
66
63
|
}
|
|
67
|
-
embedIntoContext(context, ref) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
: undefined,
|
|
88
|
-
});
|
|
89
|
-
if (ref) {
|
|
90
|
-
context.assign(ref, xObject);
|
|
91
|
-
return ref;
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
return context.register(xObject);
|
|
95
|
-
}
|
|
64
|
+
async embedIntoContext(context, ref) {
|
|
65
|
+
const xObject = context.stream(this.imageData, {
|
|
66
|
+
Type: 'XObject',
|
|
67
|
+
Subtype: 'Image',
|
|
68
|
+
BitsPerComponent: this.bitsPerComponent,
|
|
69
|
+
Width: this.width,
|
|
70
|
+
Height: this.height,
|
|
71
|
+
ColorSpace: this.colorSpace,
|
|
72
|
+
Filter: 'DCTDecode',
|
|
73
|
+
// CMYK JPEG streams in PDF are typically stored complemented,
|
|
74
|
+
// with 1 as 'off' and 0 as 'on' (PDF 32000-1:2008, 8.6.4.4).
|
|
75
|
+
//
|
|
76
|
+
// Standalone CMYK JPEG (usually exported by Photoshop) are
|
|
77
|
+
// stored inverse, with 0 as 'off' and 1 as 'on', like RGB.
|
|
78
|
+
//
|
|
79
|
+
// Applying a swap here as a hedge that most bytes passing
|
|
80
|
+
// through this method will benefit from it.
|
|
81
|
+
Decode: this.colorSpace === ColorSpace.DeviceCMYK
|
|
82
|
+
? [1, 0, 1, 0, 1, 0, 1, 0]
|
|
83
|
+
: undefined,
|
|
96
84
|
});
|
|
85
|
+
if (ref) {
|
|
86
|
+
context.assign(ref, xObject);
|
|
87
|
+
return ref;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
return context.register(xObject);
|
|
91
|
+
}
|
|
97
92
|
}
|
|
98
93
|
}
|
|
99
94
|
exports.default = JpegEmbedder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JpegEmbedder.js","sourceRoot":"","sources":["../../../src/core/embedders/JpegEmbedder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"JpegEmbedder.js","sourceRoot":"","sources":["../../../src/core/embedders/JpegEmbedder.ts"],"names":[],"mappings":";;AAGA,kBAAkB;AAClB,MAAM,OAAO,GAAG;IACd,MAAM,EAAE,MAAM,EAAE,MAAM;IACtB,MAAM,EAAE,MAAM,EAAE,MAAM;IACtB,MAAM,EAAE,MAAM,EAAE,MAAM;IACtB,MAAM,EAAE,MAAM,EAAE,MAAM;IACtB,MAAM,EAAE,MAAM,EAAE,MAAM;CACvB,CAAC;AAEF,IAAK,UAIJ;AAJD,WAAK,UAAU;IACb,uCAAyB,CAAA;IACzB,qCAAuB,CAAA;IACvB,uCAAyB,CAAA;AAC3B,CAAC,EAJI,UAAU,KAAV,UAAU,QAId;AAED,MAAM,mBAAmB,GAA8C;IACrE,CAAC,EAAE,UAAU,CAAC,UAAU;IACxB,CAAC,EAAE,UAAU,CAAC,SAAS;IACvB,CAAC,EAAE,UAAU,CAAC,UAAU;CACzB,CAAC;AAEF;;;;GAIG;AACH,MAAM,YAAY;IAkDhB,YACE,SAAqB,EACrB,gBAAwB,EACxB,KAAa,EACb,MAAc,EACd,UAAsB;QAEtB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IA7DD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAqB;QACpC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEhD,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,GAAG,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAE7D,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,MAAc,CAAC;QAEnB,OAAO,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE;YAChC,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACjC,GAAG,IAAI,CAAC,CAAC;YACT,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,MAAM;YACpC,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAChC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAChE,GAAG,IAAI,CAAC,CAAC;QAET,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACvC,GAAG,IAAI,CAAC,CAAC;QAET,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACtC,GAAG,IAAI,CAAC,CAAC;QAET,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAErD,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAE3D,MAAM,UAAU,GAAG,WAAW,CAAC;QAE/B,OAAO,IAAI,YAAY,CACrB,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,MAAM,EACN,UAAU,CACX,CAAC;IACJ,CAAC;IAuBD,KAAK,CAAC,gBAAgB,CAAC,OAAmB,EAAE,GAAY;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;YAC7C,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO;YAChB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,WAAW;YAEnB,8DAA8D;YAC9D,6DAA6D;YAC7D,EAAE;YACF,2DAA2D;YAC3D,2DAA2D;YAC3D,EAAE;YACF,0DAA0D;YAC1D,4CAA4C;YAC5C,MAAM,EACJ,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,UAAU;gBACvC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1B,CAAC,CAAC,SAAS;SAChB,CAAC,CAAC;QAEH,IAAI,GAAG,EAAE;YACP,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC7B,OAAO,GAAG,CAAC;SACZ;aAAM;YACL,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAClC;IACH,CAAC;CACF;AAED,kBAAe,YAAY,CAAC"}
|
|
@@ -30,34 +30,30 @@ class PDFPageEmbedder {
|
|
|
30
30
|
this.transformationMatrix =
|
|
31
31
|
transformationMatrix !== null && transformationMatrix !== void 0 ? transformationMatrix : boundingBoxAdjustedMatrix(bb);
|
|
32
32
|
}
|
|
33
|
-
static for(page, boundingBox, transformationMatrix) {
|
|
34
|
-
return
|
|
35
|
-
return new PDFPageEmbedder(page, boundingBox, transformationMatrix);
|
|
36
|
-
});
|
|
33
|
+
static async for(page, boundingBox, transformationMatrix) {
|
|
34
|
+
return new PDFPageEmbedder(page, boundingBox, transformationMatrix);
|
|
37
35
|
}
|
|
38
|
-
embedIntoContext(context, ref) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
Resources,
|
|
52
|
-
});
|
|
53
|
-
if (ref) {
|
|
54
|
-
context.assign(ref, xObject);
|
|
55
|
-
return ref;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
return context.register(xObject);
|
|
59
|
-
}
|
|
36
|
+
async embedIntoContext(context, ref) {
|
|
37
|
+
const { Contents, Resources } = this.page.normalizedEntries();
|
|
38
|
+
if (!Contents)
|
|
39
|
+
throw new errors_1.MissingPageContentsEmbeddingError();
|
|
40
|
+
const decodedContents = this.decodeContents(Contents);
|
|
41
|
+
const { left, bottom, right, top } = this.boundingBox;
|
|
42
|
+
const xObject = context.flateStream(decodedContents, {
|
|
43
|
+
Type: 'XObject',
|
|
44
|
+
Subtype: 'Form',
|
|
45
|
+
FormType: 1,
|
|
46
|
+
BBox: [left, bottom, right, top],
|
|
47
|
+
Matrix: this.transformationMatrix,
|
|
48
|
+
Resources,
|
|
60
49
|
});
|
|
50
|
+
if (ref) {
|
|
51
|
+
context.assign(ref, xObject);
|
|
52
|
+
return ref;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
return context.register(xObject);
|
|
56
|
+
}
|
|
61
57
|
}
|
|
62
58
|
// `contents` is an array of streams which are merged to include them in the XObject.
|
|
63
59
|
// This methods extracts each stream and joins them with a newline character.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PDFPageEmbedder.js","sourceRoot":"","sources":["../../../src/core/embedders/PDFPageEmbedder.ts"],"names":[],"mappings":";;;AAAA,sCAGmB;AAEnB,kFAA6C;AAC7C,wFAAmD;AAEnD,kFAA6C;AAE7C,8CAAuD;AACvD,mGAA8D;AAE9D,iFAA4C;AAE5C,uCAAkD;AAwBlD,MAAM,mBAAmB,GAAG,CAAC,IAAiB,EAAE,EAAE;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAEjC,MAAM,KAAK,GACT,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,mBAAS,CAAC,CAAC,QAAQ,EAAE;QACxC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,mBAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE3C,MAAM,MAAM,GACV,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,mBAAS,CAAC,CAAC,QAAQ,EAAE;QACxC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,mBAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE3C,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC3D,CAAC,CAAC;AAEF,6EAA6E;AAC7E,0BAA0B;AAC1B,MAAM,yBAAyB,GAAG,CAChC,EAAmB,EACG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAE9D,MAAM,eAAe;IAgBnB,YACE,IAAiB,EACjB,WAA6B,EAC7B,oBAA2C;QAE3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,MAAM,EAAE,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,oBAAoB;YACvB,oBAAoB,aAApB,oBAAoB,cAApB,oBAAoB,GAAI,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IA7BD,MAAM,
|
|
1
|
+
{"version":3,"file":"PDFPageEmbedder.js","sourceRoot":"","sources":["../../../src/core/embedders/PDFPageEmbedder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
3
|
const png_1 = require("../../utils/png");
|
|
5
4
|
/**
|
|
6
5
|
* A note of thanks to the developers of https://github.com/foliojs/pdfkit, as
|
|
@@ -15,32 +14,28 @@ class PngEmbedder {
|
|
|
15
14
|
this.height = png.height;
|
|
16
15
|
this.colorSpace = 'DeviceRGB';
|
|
17
16
|
}
|
|
18
|
-
static for(imageData) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return new PngEmbedder(png);
|
|
22
|
-
});
|
|
17
|
+
static async for(imageData) {
|
|
18
|
+
const png = png_1.PNG.load(imageData);
|
|
19
|
+
return new PngEmbedder(png);
|
|
23
20
|
}
|
|
24
|
-
embedIntoContext(context, ref) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
SMask,
|
|
35
|
-
});
|
|
36
|
-
if (ref) {
|
|
37
|
-
context.assign(ref, xObject);
|
|
38
|
-
return ref;
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
return context.register(xObject);
|
|
42
|
-
}
|
|
21
|
+
async embedIntoContext(context, ref) {
|
|
22
|
+
const SMask = this.embedAlphaChannel(context);
|
|
23
|
+
const xObject = context.flateStream(this.image.rgbChannel, {
|
|
24
|
+
Type: 'XObject',
|
|
25
|
+
Subtype: 'Image',
|
|
26
|
+
BitsPerComponent: this.image.bitsPerComponent,
|
|
27
|
+
Width: this.image.width,
|
|
28
|
+
Height: this.image.height,
|
|
29
|
+
ColorSpace: this.colorSpace,
|
|
30
|
+
SMask,
|
|
43
31
|
});
|
|
32
|
+
if (ref) {
|
|
33
|
+
context.assign(ref, xObject);
|
|
34
|
+
return ref;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return context.register(xObject);
|
|
38
|
+
}
|
|
44
39
|
}
|
|
45
40
|
embedAlphaChannel(context) {
|
|
46
41
|
if (!this.image.alphaChannel)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PngEmbedder.js","sourceRoot":"","sources":["../../../src/core/embedders/PngEmbedder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PngEmbedder.js","sourceRoot":"","sources":["../../../src/core/embedders/PngEmbedder.ts"],"names":[],"mappings":";;AAEA,yCAAsC;AAEtC;;;;GAIG;AACH,MAAM,WAAW;IAaf,YAAoB,GAAQ;QAC1B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;IAChC,CAAC;IAlBD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAqB;QACpC,MAAM,GAAG,GAAG,SAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAiBD,KAAK,CAAC,gBAAgB,CAAC,OAAmB,EAAE,GAAY;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE9C,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YACzD,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO;YAChB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAC7C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK;SACN,CAAC,CAAC;QAEH,IAAI,GAAG,EAAE;YACP,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC7B,OAAO,GAAG,CAAC;SACZ;aAAM;YACL,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAClC;IACH,CAAC;IAEO,iBAAiB,CAAC,OAAmB;QAC3C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY;YAAE,OAAO,SAAS,CAAC;QAE/C,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YAC3D,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAC7C,UAAU,EAAE,YAAY;YACxB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACf,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;CACF;AAED,kBAAe,WAAW,CAAC"}
|
|
@@ -17,23 +17,21 @@ class PDFObjectStreamParser extends PDFObjectParser_1.default {
|
|
|
17
17
|
this.firstOffset = dict.lookup(PDFName_1.default.of('First'), PDFNumber_1.default).asNumber();
|
|
18
18
|
this.objectCount = dict.lookup(PDFName_1.default.of('N'), PDFNumber_1.default).asNumber();
|
|
19
19
|
}
|
|
20
|
-
parseIntoContext() {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
});
|
|
20
|
+
async parseIntoContext() {
|
|
21
|
+
if (this.alreadyParsed) {
|
|
22
|
+
throw new errors_1.ReparseError('PDFObjectStreamParser', 'parseIntoContext');
|
|
23
|
+
}
|
|
24
|
+
this.alreadyParsed = true;
|
|
25
|
+
const offsetsAndObjectNumbers = this.parseOffsetsAndObjectNumbers();
|
|
26
|
+
for (let idx = 0, len = offsetsAndObjectNumbers.length; idx < len; idx++) {
|
|
27
|
+
const { objectNumber, offset } = offsetsAndObjectNumbers[idx];
|
|
28
|
+
this.bytes.moveTo(this.firstOffset + offset);
|
|
29
|
+
const ref = PDFRef_1.default.of(objectNumber, 0);
|
|
30
|
+
const object = this.parseObject(ref);
|
|
31
|
+
this.context.assign(ref, object);
|
|
32
|
+
if (this.shouldWaitForTick())
|
|
33
|
+
await (0, utils_1.waitForTick)();
|
|
34
|
+
}
|
|
37
35
|
}
|
|
38
36
|
parseOffsetsAndObjectNumbers() {
|
|
39
37
|
const offsetsAndObjectNumbers = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PDFObjectStreamParser.js","sourceRoot":"","sources":["../../../src/core/parser/PDFObjectStreamParser.ts"],"names":[],"mappings":";;;AAAA,sCAAyC;AACzC,8EAAyC;AACzC,kFAA6C;AAE7C,4EAAuC;AACvC,2EAAsC;AACtC,qFAAgD;AAChD,uCAA0C;AAE1C,MAAM,qBAAsB,SAAQ,yBAAe;IAWjD,YAAY,SAAuB,EAAE,iBAAiC;QACpE,KAAK,CAAC,oBAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,mBAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,mBAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxE,CAAC;
|
|
1
|
+
{"version":3,"file":"PDFObjectStreamParser.js","sourceRoot":"","sources":["../../../src/core/parser/PDFObjectStreamParser.ts"],"names":[],"mappings":";;;AAAA,sCAAyC;AACzC,8EAAyC;AACzC,kFAA6C;AAE7C,4EAAuC;AACvC,2EAAsC;AACtC,qFAAgD;AAChD,uCAA0C;AAE1C,MAAM,qBAAsB,SAAQ,yBAAe;IAWjD,YAAY,SAAuB,EAAE,iBAAiC;QACpE,KAAK,CAAC,oBAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,mBAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,mBAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,IAAI,qBAAY,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;SACrE;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,MAAM,uBAAuB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpE,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,uBAAuB,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;YACxE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,gBAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAAE,MAAM,IAAA,mBAAW,GAAE,CAAC;SACnD;IACH,CAAC;IAEO,4BAA4B;QAIlC,MAAM,uBAAuB,GAAG,EAAE,CAAC;QACnC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;YAC1D,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAExC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAElC,uBAAuB,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;SACxD;QACD,OAAO,uBAAuB,CAAC;IACjC,CAAC;;AArDM,+BAAS,GAAG,CACjB,SAAuB,EACvB,iBAAiC,EACjC,EAAE,CAAC,IAAI,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAqD/D,kBAAe,qBAAqB,CAAC"}
|
|
@@ -32,29 +32,27 @@ class PDFParser extends PDFObjectParser_1.default {
|
|
|
32
32
|
this.throwOnInvalidObject = throwOnInvalidObject;
|
|
33
33
|
this.context.isDecrypted = !!(cryptoFactory === null || cryptoFactory === void 0 ? void 0 : cryptoFactory.encryptionKey);
|
|
34
34
|
}
|
|
35
|
-
parseDocument() {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
throw new errors_1.StalledParserError(this.bytes.position());
|
|
48
|
-
}
|
|
49
|
-
prevOffset = offset;
|
|
50
|
-
}
|
|
51
|
-
this.maybeRecoverRoot();
|
|
52
|
-
if (this.context.lookup(PDFRef_1.default.of(0))) {
|
|
53
|
-
console.warn('Removing parsed object: 0 0 R');
|
|
54
|
-
this.context.delete(PDFRef_1.default.of(0));
|
|
35
|
+
async parseDocument() {
|
|
36
|
+
if (this.alreadyParsed) {
|
|
37
|
+
throw new errors_1.ReparseError('PDFParser', 'parseDocument');
|
|
38
|
+
}
|
|
39
|
+
this.alreadyParsed = true;
|
|
40
|
+
this.context.header = this.parseHeader();
|
|
41
|
+
let prevOffset;
|
|
42
|
+
while (!this.bytes.done()) {
|
|
43
|
+
await this.parseDocumentSection();
|
|
44
|
+
const offset = this.bytes.offset();
|
|
45
|
+
if (offset === prevOffset) {
|
|
46
|
+
throw new errors_1.StalledParserError(this.bytes.position());
|
|
55
47
|
}
|
|
56
|
-
|
|
57
|
-
}
|
|
48
|
+
prevOffset = offset;
|
|
49
|
+
}
|
|
50
|
+
this.maybeRecoverRoot();
|
|
51
|
+
if (this.context.lookup(PDFRef_1.default.of(0))) {
|
|
52
|
+
console.warn('Removing parsed object: 0 0 R');
|
|
53
|
+
this.context.delete(PDFRef_1.default.of(0));
|
|
54
|
+
}
|
|
55
|
+
return this.context;
|
|
58
56
|
}
|
|
59
57
|
maybeRecoverRoot() {
|
|
60
58
|
const isValidCatalog = (obj) => obj instanceof PDFDict_1.default &&
|
|
@@ -106,30 +104,28 @@ class PDFParser extends PDFObjectParser_1.default {
|
|
|
106
104
|
return false;
|
|
107
105
|
}
|
|
108
106
|
}
|
|
109
|
-
parseIndirectObject() {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
return ref;
|
|
132
|
-
});
|
|
107
|
+
async parseIndirectObject() {
|
|
108
|
+
const ref = this.parseIndirectObjectHeader();
|
|
109
|
+
this.skipWhitespaceAndComments();
|
|
110
|
+
const object = this.parseObject(ref);
|
|
111
|
+
this.skipWhitespaceAndComments();
|
|
112
|
+
// if (!this.matchKeyword(Keywords.endobj)) {
|
|
113
|
+
// throw new MissingKeywordError(this.bytes.position(), Keywords.endobj);
|
|
114
|
+
// }
|
|
115
|
+
// TODO: Log a warning if this fails...
|
|
116
|
+
this.matchKeyword(Keywords_1.Keywords.endobj);
|
|
117
|
+
if (object instanceof PDFRawStream_1.default &&
|
|
118
|
+
object.dict.lookup(PDFName_1.default.of('Type')) === PDFName_1.default.of('ObjStm')) {
|
|
119
|
+
await PDFObjectStreamParser_1.default.forStream(object, this.shouldWaitForTick).parseIntoContext();
|
|
120
|
+
}
|
|
121
|
+
else if (object instanceof PDFRawStream_1.default &&
|
|
122
|
+
object.dict.lookup(PDFName_1.default.of('Type')) === PDFName_1.default.of('XRef')) {
|
|
123
|
+
PDFXRefStreamParser_1.default.forStream(object).parseIntoContext();
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
this.context.assign(ref, object);
|
|
127
|
+
}
|
|
128
|
+
return ref;
|
|
133
129
|
}
|
|
134
130
|
// TODO: Improve and clean this up
|
|
135
131
|
tryToParseInvalidIndirectObject() {
|
|
@@ -158,26 +154,24 @@ class PDFParser extends PDFObjectParser_1.default {
|
|
|
158
154
|
this.context.assign(ref, object);
|
|
159
155
|
return ref;
|
|
160
156
|
}
|
|
161
|
-
parseIndirectObjects() {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
this.tryToParseInvalidIndirectObject();
|
|
173
|
-
}
|
|
174
|
-
this.skipWhitespaceAndComments();
|
|
175
|
-
// TODO: Can this be done only when needed, to avoid harming performance?
|
|
176
|
-
this.skipJibberish();
|
|
177
|
-
if (this.shouldWaitForTick())
|
|
178
|
-
yield (0, utils_1.waitForTick)();
|
|
157
|
+
async parseIndirectObjects() {
|
|
158
|
+
this.skipWhitespaceAndComments();
|
|
159
|
+
while (!this.bytes.done() && Numeric_1.IsDigit[this.bytes.peek()]) {
|
|
160
|
+
const initialOffset = this.bytes.offset();
|
|
161
|
+
try {
|
|
162
|
+
await this.parseIndirectObject();
|
|
163
|
+
}
|
|
164
|
+
catch (e) {
|
|
165
|
+
// TODO: Add tracing/logging mechanism to track when this happens!
|
|
166
|
+
this.bytes.moveTo(initialOffset);
|
|
167
|
+
this.tryToParseInvalidIndirectObject();
|
|
179
168
|
}
|
|
180
|
-
|
|
169
|
+
this.skipWhitespaceAndComments();
|
|
170
|
+
// TODO: Can this be done only when needed, to avoid harming performance?
|
|
171
|
+
this.skipJibberish();
|
|
172
|
+
if (this.shouldWaitForTick())
|
|
173
|
+
await (0, utils_1.waitForTick)();
|
|
174
|
+
}
|
|
181
175
|
}
|
|
182
176
|
maybeParseCrossRefSection() {
|
|
183
177
|
this.skipWhitespaceAndComments();
|
|
@@ -237,15 +231,13 @@ class PDFParser extends PDFObjectParser_1.default {
|
|
|
237
231
|
this.skipWhitespaceAndComments();
|
|
238
232
|
return PDFTrailer_1.default.forLastCrossRefSectionOffset(offset);
|
|
239
233
|
}
|
|
240
|
-
parseDocumentSection() {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
this.skipJibberish();
|
|
248
|
-
});
|
|
234
|
+
async parseDocumentSection() {
|
|
235
|
+
await this.parseIndirectObjects();
|
|
236
|
+
this.maybeParseCrossRefSection();
|
|
237
|
+
this.maybeParseTrailerDict();
|
|
238
|
+
this.maybeParseTrailer();
|
|
239
|
+
// TODO: Can this be done only when needed, to avoid harming performance?
|
|
240
|
+
this.skipJibberish();
|
|
249
241
|
}
|
|
250
242
|
/**
|
|
251
243
|
* This operation is not necessary for valid PDF files. But some invalid PDFs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PDFParser.js","sourceRoot":"","sources":["../../../src/core/parser/PDFParser.ts"],"names":[],"mappings":";;;AAAA,qGAAgE;AAChE,mFAA8C;AAC9C,qFAAgD;AAChD,sCAMmB;AACnB,8EAAyC;AACzC,gGAA2D;AAC3D,8EAAyC;AAEzC,wFAAmD;AACnD,4EAAuC;AACvC,2EAAsC;AACtC,qFAAgD;AAChD,iGAA4D;AAC5D,6FAAwD;AACxD,4EAAuC;AACvC,iFAA4C;AAC5C,iDAA8C;AAC9C,+CAA4C;AAC5C,uCAA0C;AAG1C,MAAM,SAAU,SAAQ,yBAAe;IAqBrC,YACE,QAAoB,EACpB,cAAc,GAAG,QAAQ,EACzB,oBAAoB,GAAG,KAAK,EAC5B,UAAU,GAAG,KAAK,EAClB,aAAsC;QAEtC,KAAK,CACH,oBAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,EACvB,oBAAU,CAAC,MAAM,EAAE,EACnB,UAAU,EACV,aAAa,CACd,CAAC;QAfI,kBAAa,GAAG,KAAK,CAAC;QACtB,kBAAa,GAAG,CAAC,CAAC;QA4GlB,sBAAiB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC;QAhGA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,CAAA,CAAA;IAC3D,CAAC;
|
|
1
|
+
{"version":3,"file":"PDFParser.js","sourceRoot":"","sources":["../../../src/core/parser/PDFParser.ts"],"names":[],"mappings":"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"}
|