reamkit 1.26.0 → 1.28.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 +14 -8
- package/dist/esm/core/converter/ream.d.ts +0 -9
- package/dist/esm/core/converter/ream.js +0 -1
- package/dist/esm/core/document-model/types.d.ts +5 -3
- package/dist/esm/core/font/index.d.ts +1 -0
- package/dist/esm/core/font/ligatures.d.ts +17 -0
- package/dist/esm/core/font/ligatures.js +49 -0
- package/dist/esm/core/font/ttf-parser.d.ts +2 -1
- package/dist/esm/core/font/ttf-parser.js +11 -2
- package/dist/esm/core/fonts/remote-fonts.d.ts +1 -1
- package/dist/esm/core/fonts/remote-fonts.js +47 -2
- package/dist/esm/core/fonts/scripts.js +10 -5
- package/dist/esm/excel/header-footer.js +53 -8
- package/dist/esm/layout/styled-layout.js +53 -3
- package/dist/esm/pdf/cid-font.js +35 -8
- package/dist/esm/pdf-reader/annot-draw.d.ts +65 -0
- package/dist/esm/pdf-reader/annot-draw.js +487 -0
- package/dist/esm/pdf-reader/annots.d.ts +0 -12
- package/dist/esm/pdf-reader/annots.js +30 -4
- package/dist/esm/pdf-reader/ccitt.d.ts +20 -3
- package/dist/esm/pdf-reader/ccitt.js +102 -6
- package/dist/esm/pdf-reader/cff-outline.d.ts +36 -0
- package/dist/esm/pdf-reader/cff-outline.js +1122 -0
- package/dist/esm/pdf-reader/cie-color.d.ts +33 -0
- package/dist/esm/pdf-reader/cie-color.js +112 -0
- package/dist/esm/pdf-reader/cmap.js +5 -2
- package/dist/esm/pdf-reader/content.d.ts +123 -3
- package/dist/esm/pdf-reader/content.js +232 -54
- package/dist/esm/pdf-reader/dingbats.d.ts +11 -0
- package/dist/esm/pdf-reader/dingbats.js +1033 -0
- package/dist/esm/pdf-reader/display.d.ts +1 -1
- package/dist/esm/pdf-reader/display.js +61 -6
- package/dist/esm/pdf-reader/document.d.ts +6 -0
- package/dist/esm/pdf-reader/document.js +55 -10
- package/dist/esm/pdf-reader/embedded-fonts.d.ts +23 -3
- package/dist/esm/pdf-reader/embedded-fonts.js +36 -4
- package/dist/esm/pdf-reader/encodings.d.ts +25 -0
- package/dist/esm/pdf-reader/encodings.js +110 -0
- package/dist/esm/pdf-reader/flow-build.d.ts +19 -5
- package/dist/esm/pdf-reader/flow-build.js +111 -11
- package/dist/esm/pdf-reader/font.js +403 -21
- package/dist/esm/pdf-reader/function.d.ts +16 -0
- package/dist/esm/pdf-reader/function.js +414 -0
- package/dist/esm/pdf-reader/glyf-outline.d.ts +43 -0
- package/dist/esm/pdf-reader/glyf-outline.js +351 -0
- package/dist/esm/pdf-reader/glyph-names.js +20 -0
- package/dist/esm/pdf-reader/icc.d.ts +10 -0
- package/dist/esm/pdf-reader/icc.js +210 -0
- package/dist/esm/pdf-reader/image-decode.d.ts +9 -4
- package/dist/esm/pdf-reader/image-decode.js +274 -72
- package/dist/esm/pdf-reader/images.d.ts +18 -0
- package/dist/esm/pdf-reader/images.js +154 -11
- package/dist/esm/pdf-reader/jbig2.d.ts +23 -0
- package/dist/esm/pdf-reader/jbig2.js +126 -32
- package/dist/esm/pdf-reader/layout.d.ts +32 -0
- package/dist/esm/pdf-reader/layout.js +1316 -64
- package/dist/esm/pdf-reader/lexer.d.ts +2 -0
- package/dist/esm/pdf-reader/lexer.js +4 -0
- package/dist/esm/pdf-reader/math-rows.d.ts +23 -0
- package/dist/esm/pdf-reader/math-rows.js +198 -0
- package/dist/esm/pdf-reader/optional-content.d.ts +36 -0
- package/dist/esm/pdf-reader/optional-content.js +93 -0
- package/dist/esm/pdf-reader/predefined-cmap.d.ts +21 -0
- package/dist/esm/pdf-reader/predefined-cmap.js +102 -0
- package/dist/esm/pdf-reader/reader.d.ts +6 -6
- package/dist/esm/pdf-reader/reader.js +102 -16
- package/dist/esm/pdf-reader/shading.d.ts +139 -8
- package/dist/esm/pdf-reader/shading.js +309 -39
- package/dist/esm/pdf-reader/standard-metrics.d.ts +8 -0
- package/dist/esm/pdf-reader/standard-metrics.js +18 -0
- package/dist/esm/pdf-reader/standard-widths.d.ts +20 -0
- package/dist/esm/pdf-reader/standard-widths.js +62 -0
- package/dist/esm/pdf-reader/stream-filters.d.ts +6 -0
- package/dist/esm/pdf-reader/stream-filters.js +67 -0
- package/dist/esm/pdf-reader/tagged.js +204 -32
- package/dist/esm/pdf-reader/text-rules.d.ts +16 -0
- package/dist/esm/pdf-reader/text-rules.js +185 -0
- package/dist/esm/pdf-reader/text.js +157 -4
- package/dist/esm/pdf-reader/type1-outline.d.ts +21 -0
- package/dist/esm/pdf-reader/type1-outline.js +576 -0
- package/dist/esm/pdf-reader/vector.d.ts +5 -0
- package/dist/esm/pdf-reader/vector.js +79 -27
- package/dist/esm/word/document-parser.js +4 -1
- package/dist/esm/word/docx-writer.js +74 -11
- package/package.json +1 -1
|
@@ -6,20 +6,59 @@
|
|
|
6
6
|
* @param data The raw fax codestream (any wrapping filters already stripped).
|
|
7
7
|
* @param params The `/CCITTFaxDecode` parameters.
|
|
8
8
|
* @returns The packed bitmap (`rowBytes × rows`, bit 1 = black, MSB first), or
|
|
9
|
-
* `undefined` when
|
|
10
|
-
* decoded at all).
|
|
9
|
+
* `undefined` when nothing could be decoded at all.
|
|
11
10
|
*/
|
|
12
11
|
function decodeCcitt(data, params) {
|
|
12
|
+
return decodeInto(new BitReader(data), params);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* ISO/IEC 14492 §C.5 — the bitplanes of a grey-scale image, all MMR-coded into
|
|
16
|
+
* ONE stream, one after another with an EOFB between them.
|
|
17
|
+
*
|
|
18
|
+
* They cannot be decoded a plane at a time from the head of the data, because
|
|
19
|
+
* nothing says how many BYTES a plane took: the reader has to carry its place
|
|
20
|
+
* across them. Advancing instead by the size of what came OUT left every plane
|
|
21
|
+
* after the first reading from the middle of the one before it, and
|
|
22
|
+
* bitmap-halftone-10bpp-mmr.pdf came back as three specks.
|
|
23
|
+
*
|
|
24
|
+
* @param data The stream holding all the planes.
|
|
25
|
+
* @param columns Each plane's width, in pixels.
|
|
26
|
+
* @param rows Each plane's height.
|
|
27
|
+
* @param count How many planes to read.
|
|
28
|
+
* @returns One packed bitmap per plane, or `undefined` if the first will not
|
|
29
|
+
* decode at all.
|
|
30
|
+
*/
|
|
31
|
+
function decodeCcittPlanes(data, columns, rows, count) {
|
|
32
|
+
const reader = new BitReader(data);
|
|
33
|
+
const out = [];
|
|
34
|
+
for (let i = 0; i < count; i++) {
|
|
35
|
+
const plane = decodeInto(reader, {
|
|
36
|
+
k: -1,
|
|
37
|
+
columns,
|
|
38
|
+
rows,
|
|
39
|
+
byteAlign: false
|
|
40
|
+
});
|
|
41
|
+
if (!plane) return out.length > 0 ? out : void 0;
|
|
42
|
+
out.push(plane);
|
|
43
|
+
reader.skipEofb();
|
|
44
|
+
reader.align();
|
|
45
|
+
}
|
|
46
|
+
return out;
|
|
47
|
+
}
|
|
48
|
+
function decodeInto(reader, params) {
|
|
13
49
|
const { k, columns, rows, byteAlign } = params;
|
|
14
|
-
if (k > 0) return void 0;
|
|
15
50
|
if (columns <= 0 || rows <= 0 || columns > 1 << 20) return void 0;
|
|
16
|
-
const reader = new BitReader(data);
|
|
17
51
|
const rowBytes = columns + 7 >> 3;
|
|
18
52
|
const out = new Uint8Array(rowBytes * rows);
|
|
19
53
|
let ref = [columns, columns];
|
|
20
54
|
for (let y = 0; y < rows; y++) {
|
|
21
55
|
if (byteAlign && y > 0) reader.align();
|
|
22
|
-
|
|
56
|
+
let twoDimensional = k < 0;
|
|
57
|
+
if (k > 0) {
|
|
58
|
+
reader.skipEol();
|
|
59
|
+
twoDimensional = reader.readBit() === 0;
|
|
60
|
+
} else if (k === 0) reader.skipEol();
|
|
61
|
+
const cur = twoDimensional ? decode2D(reader, ref, columns) : decode1D(reader, columns);
|
|
23
62
|
if (!cur) {
|
|
24
63
|
if (y === 0) return void 0;
|
|
25
64
|
break;
|
|
@@ -145,7 +184,64 @@ var BitReader = class {
|
|
|
145
184
|
this.bytePos++;
|
|
146
185
|
}
|
|
147
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* T.4 §4.1.2 — step over an end-of-line, which is eleven zeroes and a one.
|
|
189
|
+
* A stream that carries none is left exactly where it stands.
|
|
190
|
+
*/
|
|
191
|
+
skipEol() {
|
|
192
|
+
const at = {
|
|
193
|
+
byte: this.bytePos,
|
|
194
|
+
bit: this.bitPos
|
|
195
|
+
};
|
|
196
|
+
let zeros = 0;
|
|
197
|
+
for (;;) {
|
|
198
|
+
const b = this.readBit();
|
|
199
|
+
if (b < 0 || b === 0 && zeros > MAX_EOL_FILL) break;
|
|
200
|
+
if (b === 0) {
|
|
201
|
+
zeros++;
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
if (zeros >= 11) return;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
this.bytePos = at.byte;
|
|
208
|
+
this.bitPos = at.bit;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Step over the end-of-facsimile-block that closes an MMR plane: two EOLs,
|
|
212
|
+
* each eleven zeroes and a one. Anything else is left where it stands.
|
|
213
|
+
*/
|
|
214
|
+
skipEofb() {
|
|
215
|
+
const at = {
|
|
216
|
+
byte: this.bytePos,
|
|
217
|
+
bit: this.bitPos
|
|
218
|
+
};
|
|
219
|
+
for (let eol = 0; eol < 2; eol++) {
|
|
220
|
+
let zeros = 0;
|
|
221
|
+
for (;;) {
|
|
222
|
+
const b = this.readBit();
|
|
223
|
+
if (b < 0) return;
|
|
224
|
+
if (b === 0) {
|
|
225
|
+
zeros++;
|
|
226
|
+
if (zeros > 64) {
|
|
227
|
+
this.bytePos = at.byte;
|
|
228
|
+
this.bitPos = at.bit;
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (zeros < 11) {
|
|
234
|
+
this.bytePos = at.byte;
|
|
235
|
+
this.bitPos = at.bit;
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
break;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
148
242
|
};
|
|
243
|
+
/** How much fill an end-of-line may carry before this stops looking for one. */
|
|
244
|
+
var MAX_EOL_FILL = 64;
|
|
149
245
|
/**
|
|
150
246
|
* T.4 white-run modified-Huffman codes as `[run, bit-string]` (terminating runs
|
|
151
247
|
* 0..63, make-up runs multiples of 64). Exported so the test can build an
|
|
@@ -406,4 +502,4 @@ var WHITE = buildRunTable(WHITE_CODES, SHARED_MAKEUP);
|
|
|
406
502
|
var BLACK = buildRunTable(BLACK_CODES, SHARED_MAKEUP);
|
|
407
503
|
var MODES = new Map(MODE_CODES.map(([bits, m]) => [bits.length << 8 | parseInt(bits, 2), m]));
|
|
408
504
|
//#endregion
|
|
409
|
-
export { decodeCcitt };
|
|
505
|
+
export { decodeCcitt, decodeCcittPlanes };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { OutlineSource } from './glyf-outline.js';
|
|
2
|
+
/**
|
|
3
|
+
* Prepare an embedded CFF program for outline reading.
|
|
4
|
+
*
|
|
5
|
+
* @param program The raw `/FontFile3` bytes (bare CFF, or the `CFF ` table of
|
|
6
|
+
* an OpenType wrapper — the caller unwraps that).
|
|
7
|
+
* @returns A reader keyed by GLYPH INDEX, or `undefined` where the program
|
|
8
|
+
* cannot be read.
|
|
9
|
+
*/
|
|
10
|
+
export declare function cffOutlineSource(program: Uint8Array): OutlineSource | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* TN 5176 §13 — the NAME a CFF gives each glyph, inverted.
|
|
13
|
+
*
|
|
14
|
+
* A simple font selects its glyphs by name, not by index: `/Differences` says
|
|
15
|
+
* code 2 is `g18`, and only the program's charset says which glyph `g18` is.
|
|
16
|
+
* TAMReview.pdf sets most of its body in a Cambria subset named that way.
|
|
17
|
+
*
|
|
18
|
+
* @param program The raw CFF bytes.
|
|
19
|
+
* @returns Glyph name → glyph index, or `undefined` for a CID-keyed program
|
|
20
|
+
* (which names nothing) or one that cannot be read.
|
|
21
|
+
*/
|
|
22
|
+
export declare function cffNameToGid(program: Uint8Array): Map<string, number> | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* TN 5176 §10 — the CID a CID-keyed CFF gives each glyph, inverted.
|
|
25
|
+
*
|
|
26
|
+
* A `CIDFontType0C` program is charset-ordered by CID, not by glyph index, so a
|
|
27
|
+
* composite font's code (its CID) is not the index into `CharStrings`. Where the
|
|
28
|
+
* program is not CID-keyed the two are the same and this gives nothing.
|
|
29
|
+
*
|
|
30
|
+
* @param program The raw CFF bytes.
|
|
31
|
+
* @returns CID → glyph index, or `undefined` for a program that is not
|
|
32
|
+
* CID-keyed or cannot be read.
|
|
33
|
+
*/
|
|
34
|
+
export declare function cffCidToGid(program: Uint8Array): Map<number, number> | undefined;
|
|
35
|
+
/** The `CFF ` table of an OpenType wrapper, where the program is one. */
|
|
36
|
+
export declare function openTypeCff(program: Uint8Array): Uint8Array | undefined;
|