reamkit 1.6.0 → 1.9.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.
- package/README.md +13 -1
- package/dist/esm/core/converter/ream.d.ts +1 -0
- package/dist/esm/core/converter/ream.js +1 -1
- package/dist/esm/core/document-model/types.d.ts +3 -1
- package/dist/esm/core/drawingml/chart-serializer.d.ts +2 -0
- package/dist/esm/core/drawingml/chart-serializer.js +53 -0
- package/dist/esm/core/drawingml/shape-render.d.ts +3 -1
- package/dist/esm/core/drawingml/shape-render.js +27 -1
- package/dist/esm/core/vector.d.ts +10 -0
- package/dist/esm/excel/print-model.js +6 -3
- package/dist/esm/excel/xlsx-writer.js +81 -17
- package/dist/esm/html/html-writer.js +4 -2
- package/dist/esm/layout/styled-layout.js +5 -2
- package/dist/esm/pdf/shading.d.ts +12 -0
- package/dist/esm/pdf/shading.js +152 -0
- package/dist/esm/pdf/styled-page-emitter.js +29 -4
- package/dist/esm/pdf/vector-graphics.d.ts +1 -1
- package/dist/esm/pdf/vector-graphics.js +5 -3
- package/dist/esm/pdf-reader/ccitt.d.ts +15 -0
- package/dist/esm/pdf-reader/ccitt.js +394 -0
- package/dist/esm/pdf-reader/content.d.ts +43 -1
- package/dist/esm/pdf-reader/content.js +173 -4
- package/dist/esm/pdf-reader/crypto.d.ts +7 -0
- package/dist/esm/pdf-reader/crypto.js +609 -0
- package/dist/esm/pdf-reader/decrypt.d.ts +5 -0
- package/dist/esm/pdf-reader/decrypt.js +211 -0
- package/dist/esm/pdf-reader/document.d.ts +8 -1
- package/dist/esm/pdf-reader/document.js +210 -27
- package/dist/esm/pdf-reader/flow-build.d.ts +16 -1
- package/dist/esm/pdf-reader/flow-build.js +113 -3
- package/dist/esm/pdf-reader/image-decode.d.ts +15 -0
- package/dist/esm/pdf-reader/image-decode.js +550 -0
- package/dist/esm/pdf-reader/images.d.ts +16 -0
- package/dist/esm/pdf-reader/images.js +90 -0
- package/dist/esm/pdf-reader/layout.d.ts +2 -2
- package/dist/esm/pdf-reader/layout.js +86 -14
- package/dist/esm/pdf-reader/png-encode.d.ts +2 -0
- package/dist/esm/pdf-reader/png-encode.js +98 -0
- package/dist/esm/pdf-reader/predictor.d.ts +7 -0
- package/dist/esm/pdf-reader/predictor.js +61 -0
- package/dist/esm/pdf-reader/reader.d.ts +1 -1
- package/dist/esm/pdf-reader/reader.js +14 -7
- package/dist/esm/pdf-reader/shading.d.ts +3 -0
- package/dist/esm/pdf-reader/shading.js +147 -0
- package/dist/esm/pdf-reader/tagged.d.ts +2 -2
- package/dist/esm/pdf-reader/tagged.js +60 -7
- package/dist/esm/pdf-reader/text.js +91 -10
- package/dist/esm/pdf-reader/vector.d.ts +16 -0
- package/dist/esm/pdf-reader/vector.js +63 -0
- package/dist/esm/svg/svg-writer.js +12 -5
- package/dist/esm/word/docx-writer.js +104 -8
- package/dist/esm/word/drawing-parser.js +28 -17
- package/dist/esm/word/omml-serializer.d.ts +2 -0
- package/dist/esm/word/omml-serializer.js +48 -0
- package/package.json +1 -1
|
@@ -44,18 +44,85 @@ function initialState() {
|
|
|
44
44
|
wordSpacing: 0,
|
|
45
45
|
hScale: 1,
|
|
46
46
|
leading: 0,
|
|
47
|
-
rise: 0
|
|
47
|
+
rise: 0,
|
|
48
|
+
fillColor: "000000",
|
|
49
|
+
strokeColor: "000000",
|
|
50
|
+
lineWidth: 1,
|
|
51
|
+
fillGradient: void 0
|
|
48
52
|
};
|
|
49
53
|
}
|
|
50
|
-
function interpretContent(bytes, fonts) {
|
|
54
|
+
function interpretContent(bytes, fonts, initialCtm = IDENTITY, shadings = /* @__PURE__ */ new Map()) {
|
|
51
55
|
const runs = [];
|
|
56
|
+
const images = [];
|
|
57
|
+
const vectors = [];
|
|
52
58
|
const lexer = new Lexer(bytes);
|
|
53
59
|
const stack = [];
|
|
54
60
|
let state = initialState();
|
|
61
|
+
state.ctm = initialCtm;
|
|
55
62
|
let tm = IDENTITY;
|
|
56
63
|
let tlm = IDENTITY;
|
|
64
|
+
let path = [];
|
|
57
65
|
let operands = [];
|
|
58
66
|
const mcStack = [];
|
|
67
|
+
const toPage = (x, y) => [x * state.ctm[0] + y * state.ctm[2] + state.ctm[4], x * state.ctm[1] + y * state.ctm[3] + state.ctm[5]];
|
|
68
|
+
const moveTo = (x, y) => {
|
|
69
|
+
const [px, py] = toPage(x, y);
|
|
70
|
+
path.push({
|
|
71
|
+
op: "move",
|
|
72
|
+
x: px,
|
|
73
|
+
y: py
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
const lineTo = (x, y) => {
|
|
77
|
+
const [px, py] = toPage(x, y);
|
|
78
|
+
path.push({
|
|
79
|
+
op: "line",
|
|
80
|
+
x: px,
|
|
81
|
+
y: py
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
const curveTo = (a, b, c, d, e, f) => {
|
|
85
|
+
const [x1, y1] = toPage(a, b);
|
|
86
|
+
const [x2, y2] = toPage(c, d);
|
|
87
|
+
const [x, y] = toPage(e, f);
|
|
88
|
+
path.push({
|
|
89
|
+
op: "cubic",
|
|
90
|
+
x1,
|
|
91
|
+
y1,
|
|
92
|
+
x2,
|
|
93
|
+
y2,
|
|
94
|
+
x,
|
|
95
|
+
y
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
const rectTo = (x, y, w, h) => {
|
|
99
|
+
moveTo(x, y);
|
|
100
|
+
lineTo(x + w, y);
|
|
101
|
+
lineTo(x + w, y + h);
|
|
102
|
+
lineTo(x, y + h);
|
|
103
|
+
path.push({ op: "close" });
|
|
104
|
+
};
|
|
105
|
+
const ctmLineWidth = () => {
|
|
106
|
+
const m = state.ctm;
|
|
107
|
+
const scale = Math.sqrt(Math.abs(m[0] * m[3] - m[1] * m[2])) || 1;
|
|
108
|
+
return state.lineWidth * scale;
|
|
109
|
+
};
|
|
110
|
+
const paintPath = (fill, stroke) => {
|
|
111
|
+
if (path.length >= 2 && (fill || stroke)) {
|
|
112
|
+
const mcid = mcStack.length > 0 ? mcStack[mcStack.length - 1] : void 0;
|
|
113
|
+
vectors.push({
|
|
114
|
+
segs: path,
|
|
115
|
+
...fill ? { fillHex: state.fillColor } : {},
|
|
116
|
+
...fill && state.fillGradient ? { gradient: state.fillGradient } : {},
|
|
117
|
+
...stroke ? {
|
|
118
|
+
strokeHex: state.strokeColor,
|
|
119
|
+
lineWidth: ctmLineWidth()
|
|
120
|
+
} : {},
|
|
121
|
+
...mcid !== void 0 ? { mcid } : {}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
path = [];
|
|
125
|
+
};
|
|
59
126
|
const num = (i) => {
|
|
60
127
|
const v = operands[i];
|
|
61
128
|
return typeof v === "number" ? v : 0;
|
|
@@ -179,6 +246,89 @@ function interpretContent(bytes, fonts) {
|
|
|
179
246
|
case "EMC":
|
|
180
247
|
mcStack.pop();
|
|
181
248
|
break;
|
|
249
|
+
case "Do": {
|
|
250
|
+
const nm = operands[0];
|
|
251
|
+
if (nm instanceof PdfName) {
|
|
252
|
+
const mcid = mcStack.length > 0 ? mcStack[mcStack.length - 1] : void 0;
|
|
253
|
+
images.push({
|
|
254
|
+
name: nm.value,
|
|
255
|
+
ctm: state.ctm,
|
|
256
|
+
...mcid !== void 0 ? { mcid } : {}
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
case "rg":
|
|
262
|
+
state.fillColor = rgbHex(num(0), num(1), num(2));
|
|
263
|
+
state.fillGradient = void 0;
|
|
264
|
+
break;
|
|
265
|
+
case "g":
|
|
266
|
+
state.fillColor = grayHex(num(0));
|
|
267
|
+
state.fillGradient = void 0;
|
|
268
|
+
break;
|
|
269
|
+
case "k":
|
|
270
|
+
state.fillColor = cmykHex(num(0), num(1), num(2), num(3));
|
|
271
|
+
state.fillGradient = void 0;
|
|
272
|
+
break;
|
|
273
|
+
case "scn":
|
|
274
|
+
case "sc": {
|
|
275
|
+
const last = operands[operands.length - 1];
|
|
276
|
+
state.fillGradient = last instanceof PdfName ? shadings.get(last.value) : void 0;
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
case "RG":
|
|
280
|
+
state.strokeColor = rgbHex(num(0), num(1), num(2));
|
|
281
|
+
break;
|
|
282
|
+
case "G":
|
|
283
|
+
state.strokeColor = grayHex(num(0));
|
|
284
|
+
break;
|
|
285
|
+
case "K":
|
|
286
|
+
state.strokeColor = cmykHex(num(0), num(1), num(2), num(3));
|
|
287
|
+
break;
|
|
288
|
+
case "w":
|
|
289
|
+
state.lineWidth = num(0);
|
|
290
|
+
break;
|
|
291
|
+
case "m":
|
|
292
|
+
moveTo(num(0), num(1));
|
|
293
|
+
break;
|
|
294
|
+
case "l":
|
|
295
|
+
lineTo(num(0), num(1));
|
|
296
|
+
break;
|
|
297
|
+
case "c":
|
|
298
|
+
curveTo(num(0), num(1), num(2), num(3), num(4), num(5));
|
|
299
|
+
break;
|
|
300
|
+
case "re":
|
|
301
|
+
rectTo(num(0), num(1), num(2), num(3));
|
|
302
|
+
break;
|
|
303
|
+
case "h":
|
|
304
|
+
path.push({ op: "close" });
|
|
305
|
+
break;
|
|
306
|
+
case "f":
|
|
307
|
+
case "F":
|
|
308
|
+
case "f*":
|
|
309
|
+
paintPath(true, false);
|
|
310
|
+
break;
|
|
311
|
+
case "S":
|
|
312
|
+
paintPath(false, true);
|
|
313
|
+
break;
|
|
314
|
+
case "s":
|
|
315
|
+
path.push({ op: "close" });
|
|
316
|
+
paintPath(false, true);
|
|
317
|
+
break;
|
|
318
|
+
case "B":
|
|
319
|
+
case "B*":
|
|
320
|
+
paintPath(true, true);
|
|
321
|
+
break;
|
|
322
|
+
case "b":
|
|
323
|
+
case "b*":
|
|
324
|
+
path.push({ op: "close" });
|
|
325
|
+
paintPath(true, true);
|
|
326
|
+
break;
|
|
327
|
+
case "n":
|
|
328
|
+
paintPath(false, false);
|
|
329
|
+
break;
|
|
330
|
+
case "W":
|
|
331
|
+
case "W*": break;
|
|
182
332
|
default: break;
|
|
183
333
|
}
|
|
184
334
|
};
|
|
@@ -215,7 +365,26 @@ function interpretContent(bytes, fonts) {
|
|
|
215
365
|
break;
|
|
216
366
|
}
|
|
217
367
|
}
|
|
218
|
-
return
|
|
368
|
+
return {
|
|
369
|
+
texts: runs,
|
|
370
|
+
images,
|
|
371
|
+
vectors
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
function clamp255(v) {
|
|
375
|
+
return Math.max(0, Math.min(255, Math.round(v * 255)));
|
|
376
|
+
}
|
|
377
|
+
function hex2(v) {
|
|
378
|
+
return clamp255(v).toString(16).padStart(2, "0");
|
|
379
|
+
}
|
|
380
|
+
function rgbHex(r, g, b) {
|
|
381
|
+
return (hex2(r) + hex2(g) + hex2(b)).toUpperCase();
|
|
382
|
+
}
|
|
383
|
+
function grayHex(v) {
|
|
384
|
+
return rgbHex(v, v, v);
|
|
385
|
+
}
|
|
386
|
+
function cmykHex(c, m, y, k) {
|
|
387
|
+
return rgbHex((1 - c) * (1 - k), (1 - m) * (1 - k), (1 - y) * (1 - k));
|
|
219
388
|
}
|
|
220
389
|
function matrixFromOperands(operands) {
|
|
221
390
|
const n = (i) => typeof operands[i] === "number" ? operands[i] : 0;
|
|
@@ -289,4 +458,4 @@ function skipInlineImage(lexer) {
|
|
|
289
458
|
lexer.pos = ei < 0 ? lexer.length : ei + 2;
|
|
290
459
|
}
|
|
291
460
|
//#endregion
|
|
292
|
-
export { interpretContent };
|
|
461
|
+
export { IDENTITY, interpretContent, multiply };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function rc4(key: Uint8Array, data: Uint8Array): Uint8Array;
|
|
2
|
+
export declare function md5(input: Uint8Array): Uint8Array;
|
|
3
|
+
export declare function sha256(input: Uint8Array): Uint8Array;
|
|
4
|
+
export declare function sha512(input: Uint8Array): Uint8Array;
|
|
5
|
+
export declare function sha384(input: Uint8Array): Uint8Array;
|
|
6
|
+
export declare function aesCbcDecrypt(key: Uint8Array, iv: Uint8Array, data: Uint8Array, stripPad: boolean): Uint8Array;
|
|
7
|
+
export declare function aesCbcEncrypt(key: Uint8Array, iv: Uint8Array, data: Uint8Array): Uint8Array;
|