reamkit 0.1.0-alpha.0 → 1.0.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 +107 -30
- package/dist/esm/{bidi → core/bidi}/algorithm.js +1 -1
- package/dist/esm/{bidi → core/bidi}/char-types.js +1 -1
- package/dist/esm/{bidi → core/bidi}/index.d.ts +2 -0
- package/dist/esm/{bidi → core/bidi}/index.js +2 -1
- package/dist/esm/core/bidi/segments.d.ts +6 -0
- package/dist/esm/core/bidi/segments.js +41 -0
- package/dist/esm/core/bytes.d.ts +1 -0
- package/dist/esm/core/bytes.js +11 -0
- package/dist/esm/core/converter/facade.d.ts +45 -0
- package/dist/esm/core/converter/facade.js +89 -0
- package/dist/esm/core/converter/index.d.ts +4 -0
- package/dist/esm/core/converter/project.d.ts +4 -0
- package/dist/esm/core/converter/project.js +17 -0
- package/dist/esm/core/converter/ream.d.ts +35 -0
- package/dist/esm/core/converter/ream.js +101 -0
- package/dist/esm/{crypto → core/crypto}/asn1.js +1 -1
- package/dist/esm/{crypto → core/crypto}/cms.js +1 -1
- package/dist/esm/core/document-model/index.d.ts +1 -0
- package/dist/esm/{document-model → core/document-model}/types.d.ts +57 -41
- package/dist/esm/{ooxml → core}/drawingml/chart-parser.d.ts +1 -1
- package/dist/esm/{ooxml → core}/drawingml/chart-parser.js +6 -29
- package/dist/esm/{ooxml → core}/drawingml/colors.d.ts +3 -0
- package/dist/esm/{ooxml → core}/drawingml/colors.js +32 -2
- package/dist/esm/{ooxml → core}/drawingml/theme-parser.js +2 -2
- package/dist/esm/{font → core/font}/arabic-joining.js +1 -1
- package/dist/esm/{font → core/font}/binary-reader.js +1 -1
- package/dist/esm/{font → core/font}/font-registry.d.ts +1 -0
- package/dist/esm/{font → core/font}/font-registry.js +17 -16
- package/dist/esm/{font → core/font}/index.d.ts +3 -0
- package/dist/esm/core/font/measure.d.ts +7 -0
- package/dist/esm/core/font/measure.js +30 -0
- package/dist/esm/{font → core/font}/opentype-layout.js +1 -1
- package/dist/esm/{font → core/font}/ttf-parser.js +1 -1
- package/dist/esm/{font → core/font}/ttf-subset.js +1 -1
- package/dist/esm/core/fonts/provider.d.ts +60 -0
- package/dist/esm/core/fonts/provider.js +163 -0
- package/dist/esm/{fonts → core/fonts}/remote-fonts.js +1 -1
- package/dist/esm/{hyphenation → core/hyphenation}/index.js +1 -1
- package/dist/esm/{hyphenation → core/hyphenation}/liang.js +1 -1
- package/dist/esm/{hyphenation → core/hyphenation}/patterns-en-us.js +1 -1
- package/dist/esm/{hyphenation → core/hyphenation}/patterns-ru.js +1 -1
- package/dist/esm/core/images.d.ts +17 -0
- package/dist/esm/core/images.js +308 -0
- package/dist/esm/core/ir/adapters.d.ts +37 -0
- package/dist/esm/core/ir/features.d.ts +25 -0
- package/dist/esm/core/ir/features.js +24 -0
- package/dist/esm/core/ir/flow.d.ts +24 -0
- package/dist/esm/core/ir/index.d.ts +11 -0
- package/dist/esm/core/ir/loss.d.ts +22 -0
- package/dist/esm/core/ir/loss.js +15 -0
- package/dist/esm/core/ir/resources.d.ts +16 -0
- package/dist/esm/core/ir/resources.js +50 -0
- package/dist/esm/core/ir/units.d.ts +16 -0
- package/dist/esm/core/ir/units.js +41 -0
- package/dist/esm/core/line-breaker/index.d.ts +2 -0
- package/dist/esm/{line-breaker → core/line-breaker}/knuth-plass.d.ts +1 -0
- package/dist/esm/{line-breaker → core/line-breaker}/knuth-plass.js +3 -3
- package/dist/esm/core/numbering/apply.d.ts +3 -0
- package/dist/esm/core/numbering/apply.js +62 -0
- package/dist/esm/core/numbering/index.d.ts +2 -0
- package/dist/esm/{numbering → core/numbering}/state.js +1 -1
- package/dist/esm/{opc → core/opc}/core-properties.js +1 -1
- package/dist/esm/{opc → core/opc}/package.d.ts +2 -1
- package/dist/esm/{opc → core/opc}/package.js +7 -3
- package/dist/esm/{opc → core/opc}/relationship-types.js +1 -1
- package/dist/esm/{opc → core/opc}/relationships.js +1 -1
- package/dist/esm/{ooxml/wordproc → core}/po-helpers.js +1 -1
- package/dist/esm/core/style-cascade/index.d.ts +3 -0
- package/dist/esm/core/style-cascade/index.js +2 -0
- package/dist/esm/core/style-cascade/resolver.d.ts +7 -0
- package/dist/esm/{style-cascade → core/style-cascade}/resolver.js +82 -10
- package/dist/esm/{style-cascade → core/style-cascade}/types.d.ts +10 -8
- package/dist/esm/{style-cascade → core/style-cascade}/types.js +9 -8
- package/dist/esm/core/vector.d.ts +45 -0
- package/dist/esm/core/vector.js +48 -0
- package/dist/esm/{ooxml/spreadsheet → excel}/cell-reference.js +1 -1
- package/dist/esm/{ooxml/spreadsheet → excel}/defined-name-ref.js +1 -1
- package/dist/esm/{ooxml/spreadsheet → excel}/index.d.ts +1 -1
- package/dist/esm/{ooxml/spreadsheet → excel}/number-format.js +1 -1
- package/dist/esm/excel/print-model.d.ts +18 -0
- package/dist/esm/{converter/xlsx-to-pdf.js → excel/print-model.js} +39 -148
- package/dist/esm/{ooxml/spreadsheet → excel}/shared-strings-parser.js +1 -1
- package/dist/esm/{ooxml/spreadsheet → excel}/styles-parser.js +1 -1
- package/dist/esm/{ooxml/spreadsheet → excel}/workbook-parser.js +1 -1
- package/dist/esm/{ooxml/spreadsheet → excel}/worksheet-parser.js +1 -1
- package/dist/esm/excel/xlsx-reader.d.ts +4 -0
- package/dist/esm/excel/xlsx-reader.js +91 -0
- package/dist/esm/{converter → excel}/xlsx-to-pdf.d.ts +13 -2
- package/dist/esm/excel/xlsx-to-pdf.js +69 -0
- package/dist/esm/index.d.ts +23 -8
- package/dist/esm/index.js +18 -10
- package/dist/esm/{pdf → layout}/arc-to-bezier.d.ts +1 -1
- package/dist/esm/{pdf → layout}/arc-to-bezier.js +2 -2
- package/dist/esm/{pdf → layout}/chart-geometry.d.ts +1 -1
- package/dist/esm/{pdf → layout}/math-layout.d.ts +2 -2
- package/dist/esm/{pdf → layout}/math-layout.js +1 -1
- package/dist/esm/layout/page-doc.d.ts +133 -0
- package/dist/esm/layout/page-doc.js +38 -0
- package/dist/esm/{pdf → layout}/preset-geometry.d.ts +2 -2
- package/dist/esm/{pdf → layout}/preset-geometry.js +2 -2
- package/dist/esm/layout/styled-layout.d.ts +84 -0
- package/dist/esm/layout/styled-layout.js +1729 -0
- package/dist/esm/pdf/cid-font.d.ts +1 -1
- package/dist/esm/pdf/cid-font.js +6 -21
- package/dist/esm/pdf/image-xobject.d.ts +4 -5
- package/dist/esm/pdf/image-xobject.js +21 -324
- package/dist/esm/pdf/index.d.ts +2 -2
- package/dist/esm/pdf/index.js +1 -0
- package/dist/esm/pdf/signature.js +4 -4
- package/dist/esm/pdf/styled-page-emitter.d.ts +11 -0
- package/dist/esm/pdf/styled-page-emitter.js +557 -0
- package/dist/esm/pdf/styled-page-renderer.d.ts +4 -42
- package/dist/esm/pdf/styled-page-renderer.js +4 -2311
- package/dist/esm/pdf/text-page-renderer.d.ts +1 -1
- package/dist/esm/pdf/vector-graphics.d.ts +3 -45
- package/dist/esm/pdf/vector-graphics.js +2 -46
- package/dist/esm/svg/svg-writer.d.ts +8 -0
- package/dist/esm/svg/svg-writer.js +137 -0
- package/dist/esm/word/document-parser.d.ts +16 -0
- package/dist/esm/{ooxml/wordproc → word}/document-parser.js +55 -47
- package/dist/esm/word/docx-reader.d.ts +4 -0
- package/dist/esm/word/docx-reader.js +191 -0
- package/dist/esm/word/docx-to-pdf.d.ts +34 -0
- package/dist/esm/word/docx-to-pdf.js +112 -0
- package/dist/esm/{ooxml/wordproc → word}/drawing-parser.d.ts +10 -9
- package/dist/esm/{ooxml/wordproc → word}/drawing-parser.js +15 -42
- package/dist/esm/{ooxml/wordproc → word}/font-table.d.ts +2 -2
- package/dist/esm/{ooxml/wordproc → word}/font-table.js +2 -2
- package/dist/esm/{ooxml/wordproc → word}/index.d.ts +3 -2
- package/dist/esm/{ooxml/wordproc → word}/numbering-parser.d.ts +1 -1
- package/dist/esm/{ooxml/wordproc → word}/numbering-parser.js +1 -1
- package/dist/esm/{ooxml/math → word}/omml-parser.d.ts +2 -2
- package/dist/esm/{ooxml/math → word}/omml-parser.js +2 -2
- package/dist/esm/{ooxml/wordproc → word}/paragraph-properties.d.ts +1 -1
- package/dist/esm/{ooxml/wordproc → word}/paragraph-properties.js +9 -8
- package/dist/esm/{ooxml/wordproc → word}/po-to-flat.d.ts +1 -1
- package/dist/esm/{ooxml/wordproc → word}/po-to-flat.js +2 -2
- package/dist/esm/{ooxml/wordproc → word}/run-properties.d.ts +1 -1
- package/dist/esm/{ooxml/wordproc → word}/run-properties.js +3 -2
- package/dist/esm/{ooxml/wordproc → word}/settings-parser.js +2 -2
- package/dist/esm/word/styles-parser.d.ts +2 -0
- package/dist/esm/{ooxml/wordproc → word}/styles-parser.js +4 -7
- package/dist/esm/word/table-parser.d.ts +4 -0
- package/dist/esm/{ooxml/wordproc → word}/table-parser.js +80 -26
- package/dist/esm/{ooxml/wordproc → word}/xml-helpers.js +1 -1
- package/package.json +5 -6
- package/dist/esm/converter/docx-to-pdf.d.ts +0 -15
- package/dist/esm/converter/docx-to-pdf.js +0 -227
- package/dist/esm/converter/index.d.ts +0 -4
- package/dist/esm/converter/index.js +0 -2
- package/dist/esm/document-model/index.d.ts +0 -1
- package/dist/esm/line-breaker/index.d.ts +0 -2
- package/dist/esm/numbering/index.d.ts +0 -1
- package/dist/esm/ooxml/index.d.ts +0 -1
- package/dist/esm/ooxml/wordproc/document-parser.d.ts +0 -9
- package/dist/esm/ooxml/wordproc/styles-parser.d.ts +0 -3
- package/dist/esm/ooxml/wordproc/table-parser.d.ts +0 -3
- package/dist/esm/style-cascade/index.d.ts +0 -3
- package/dist/esm/style-cascade/resolver.d.ts +0 -4
- /package/dist/esm/{bidi → core/bidi}/algorithm.d.ts +0 -0
- /package/dist/esm/{bidi → core/bidi}/char-types.d.ts +0 -0
- /package/dist/esm/{crypto → core/crypto}/asn1.d.ts +0 -0
- /package/dist/esm/{crypto → core/crypto}/cms.d.ts +0 -0
- /package/dist/esm/{crypto → core/crypto}/index.d.ts +0 -0
- /package/dist/esm/{crypto → core/crypto}/index.js +0 -0
- /package/dist/esm/{document-model → core/document-model}/index.js +0 -0
- /package/dist/esm/{ooxml → core}/drawingml/theme-parser.d.ts +0 -0
- /package/dist/esm/{font → core/font}/arabic-joining.d.ts +0 -0
- /package/dist/esm/{font → core/font}/binary-reader.d.ts +0 -0
- /package/dist/esm/{font → core/font}/opentype-layout.d.ts +0 -0
- /package/dist/esm/{font → core/font}/ttf-parser.d.ts +0 -0
- /package/dist/esm/{font → core/font}/ttf-subset.d.ts +0 -0
- /package/dist/esm/{fonts → core/fonts}/index.d.ts +0 -0
- /package/dist/esm/{fonts → core/fonts}/remote-fonts.d.ts +0 -0
- /package/dist/esm/{hyphenation → core/hyphenation}/index.d.ts +0 -0
- /package/dist/esm/{hyphenation → core/hyphenation}/liang.d.ts +0 -0
- /package/dist/esm/{hyphenation → core/hyphenation}/patterns-en-us.d.ts +0 -0
- /package/dist/esm/{hyphenation → core/hyphenation}/patterns-ru.d.ts +0 -0
- /package/dist/esm/{numbering → core/numbering}/state.d.ts +0 -0
- /package/dist/esm/{opc → core/opc}/core-properties.d.ts +0 -0
- /package/dist/esm/{opc → core/opc}/index.d.ts +0 -0
- /package/dist/esm/{opc → core/opc}/index.js +0 -0
- /package/dist/esm/{opc → core/opc}/relationship-types.d.ts +0 -0
- /package/dist/esm/{opc → core/opc}/relationships.d.ts +0 -0
- /package/dist/esm/{ooxml/wordproc → core}/po-helpers.d.ts +0 -0
- /package/dist/esm/{ooxml/spreadsheet → excel}/cell-reference.d.ts +0 -0
- /package/dist/esm/{ooxml/spreadsheet → excel}/defined-name-ref.d.ts +0 -0
- /package/dist/esm/{ooxml/spreadsheet → excel}/index.js +0 -0
- /package/dist/esm/{ooxml/spreadsheet → excel}/number-format.d.ts +0 -0
- /package/dist/esm/{ooxml/spreadsheet → excel}/shared-strings-parser.d.ts +0 -0
- /package/dist/esm/{ooxml/spreadsheet → excel}/styles-parser.d.ts +0 -0
- /package/dist/esm/{ooxml/spreadsheet → excel}/workbook-parser.d.ts +0 -0
- /package/dist/esm/{ooxml/spreadsheet → excel}/worksheet-parser.d.ts +0 -0
- /package/dist/esm/{pdf → layout}/chart-geometry.js +0 -0
- /package/dist/esm/{ooxml/wordproc → word}/index.js +0 -0
- /package/dist/esm/{ooxml/wordproc → word}/settings-parser.d.ts +0 -0
- /package/dist/esm/{ooxml/wordproc → word}/text-extractor.d.ts +0 -0
- /package/dist/esm/{ooxml/wordproc → word}/text-extractor.js +0 -0
- /package/dist/esm/{ooxml/wordproc → word}/xml-helpers.d.ts +0 -0
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { EMPTY_STYLE_SHEET } from "../core/style-cascade/resolver.js";
|
|
2
|
+
import "../core/style-cascade/index.js";
|
|
1
3
|
import { asArray, asElement, getAttr, getVal } from "./xml-helpers.js";
|
|
2
4
|
import { parseRunProperties } from "./run-properties.js";
|
|
3
5
|
import { parseParagraphProperties } from "./paragraph-properties.js";
|
|
4
6
|
import { XMLParser } from "fast-xml-parser";
|
|
5
|
-
//#region src/
|
|
7
|
+
//#region src/word/styles-parser.ts
|
|
6
8
|
var decoder = new TextDecoder("utf-8");
|
|
7
9
|
var parser = new XMLParser({
|
|
8
10
|
ignoreAttributes: false,
|
|
@@ -18,11 +20,6 @@ var STYLE_TYPES = new Set([
|
|
|
18
20
|
"table",
|
|
19
21
|
"numbering"
|
|
20
22
|
]);
|
|
21
|
-
var EMPTY_STYLE_SHEET = {
|
|
22
|
-
defaultRunProperties: {},
|
|
23
|
-
defaultParagraphProperties: {},
|
|
24
|
-
styles: /* @__PURE__ */ new Map()
|
|
25
|
-
};
|
|
26
23
|
function parseStyles(stylesXml) {
|
|
27
24
|
const xml = decoder.decode(stylesXml);
|
|
28
25
|
const root = asElement(parser.parse(xml)["w:styles"]);
|
|
@@ -64,4 +61,4 @@ function parseStyles(stylesXml) {
|
|
|
64
61
|
};
|
|
65
62
|
}
|
|
66
63
|
//#endregion
|
|
67
|
-
export {
|
|
64
|
+
export { parseStyles };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { eighthPtToPt, twipsToPt } from "../core/ir/units.js";
|
|
2
|
+
import { poAttr, poChildren, poChildrenWith, poFirstChild, poIntAttr, poToggle, poVal } from "../core/po-helpers.js";
|
|
3
|
+
import { DEFAULT_PARSE_CONTEXT, parseBodyElements } from "./document-parser.js";
|
|
4
|
+
//#region src/word/table-parser.ts
|
|
4
5
|
var BORDER_STYLES = new Set([
|
|
5
6
|
"none",
|
|
6
7
|
"single",
|
|
@@ -20,17 +21,62 @@ var HEIGHT_RULES = new Set([
|
|
|
20
21
|
"atLeast",
|
|
21
22
|
"exact"
|
|
22
23
|
]);
|
|
23
|
-
function parseTable(tbl) {
|
|
24
|
+
function parseTable(tbl, ctx = DEFAULT_PARSE_CONTEXT) {
|
|
24
25
|
const properties = parseTableProperties(poFirstChild(tbl, "w:tblPr"));
|
|
25
26
|
const grid = parseTableGrid(poFirstChild(tbl, "w:tblGrid"));
|
|
26
|
-
const
|
|
27
|
-
for (const tr of poChildrenWith(tbl, "w:tr"))
|
|
27
|
+
const draftRows = [];
|
|
28
|
+
for (const tr of poChildrenWith(tbl, "w:tr")) draftRows.push(parseTableRow(tr, ctx));
|
|
29
|
+
const roles = resolveMergeRoles(draftRows.map((r) => r.cells));
|
|
28
30
|
return {
|
|
29
31
|
properties,
|
|
30
32
|
grid,
|
|
31
|
-
rows
|
|
33
|
+
rows: draftRows.map((draft, rowIdx) => ({
|
|
34
|
+
properties: draft.properties,
|
|
35
|
+
cells: draft.cells.map((d, cellIdx) => {
|
|
36
|
+
const merge = roles[rowIdx][cellIdx];
|
|
37
|
+
return merge ? {
|
|
38
|
+
...d.cell,
|
|
39
|
+
properties: {
|
|
40
|
+
...d.cell.properties,
|
|
41
|
+
merge
|
|
42
|
+
}
|
|
43
|
+
} : d.cell;
|
|
44
|
+
})
|
|
45
|
+
}))
|
|
32
46
|
};
|
|
33
47
|
}
|
|
48
|
+
function resolveMergeRoles(rows) {
|
|
49
|
+
const out = rows.map((r) => new Array(r.length).fill(void 0));
|
|
50
|
+
const colSlots = /* @__PURE__ */ new Map();
|
|
51
|
+
for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {
|
|
52
|
+
const row = rows[rowIdx];
|
|
53
|
+
let colIdx = 0;
|
|
54
|
+
for (let cellIdx = 0; cellIdx < row.length; cellIdx++) {
|
|
55
|
+
const d = row[cellIdx];
|
|
56
|
+
let arr = colSlots.get(colIdx);
|
|
57
|
+
if (!arr) {
|
|
58
|
+
arr = [];
|
|
59
|
+
colSlots.set(colIdx, arr);
|
|
60
|
+
}
|
|
61
|
+
arr.push({
|
|
62
|
+
rowIdx,
|
|
63
|
+
cellIdx,
|
|
64
|
+
vMerge: d.vMerge
|
|
65
|
+
});
|
|
66
|
+
colIdx += Math.max(1, d.cell.properties.colSpan ?? 1);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
for (const slots of colSlots.values()) for (let i = 0; i < slots.length; i++) {
|
|
70
|
+
const cur = slots[i];
|
|
71
|
+
const next = slots[i + 1];
|
|
72
|
+
const nextIsContinue = !!next && next.vMerge === "continue";
|
|
73
|
+
let role;
|
|
74
|
+
if (cur.vMerge === "restart") role = nextIsContinue ? "start" : void 0;
|
|
75
|
+
else if (cur.vMerge === "continue") role = nextIsContinue ? "middle" : "end";
|
|
76
|
+
out[cur.rowIdx][cur.cellIdx] = role;
|
|
77
|
+
}
|
|
78
|
+
return out;
|
|
79
|
+
}
|
|
34
80
|
function parseTableProperties(tblPr) {
|
|
35
81
|
if (!tblPr) return {};
|
|
36
82
|
const out = {};
|
|
@@ -38,7 +84,8 @@ function parseTableProperties(tblPr) {
|
|
|
38
84
|
if (tblW) {
|
|
39
85
|
const w = poIntAttr(tblW, "w");
|
|
40
86
|
const type = poAttr(tblW, "type");
|
|
41
|
-
if (w !== void 0) out.
|
|
87
|
+
if (w !== void 0 && type === "pct") out.widthFraction = w / 5e3;
|
|
88
|
+
else if (w !== void 0) out.widthPt = twipsToPt(w);
|
|
42
89
|
if (type && WIDTH_TYPES.has(type)) out.widthType = type;
|
|
43
90
|
}
|
|
44
91
|
const tblLayout = poFirstChild(tblPr, "w:tblLayout");
|
|
@@ -57,14 +104,14 @@ function parseTableGrid(tblGrid) {
|
|
|
57
104
|
const cols = [];
|
|
58
105
|
for (const gridCol of poChildrenWith(tblGrid, "w:gridCol")) {
|
|
59
106
|
const w = poIntAttr(gridCol, "w");
|
|
60
|
-
cols.push(w ?? 0);
|
|
107
|
+
cols.push(twipsToPt(w ?? 0));
|
|
61
108
|
}
|
|
62
109
|
return cols;
|
|
63
110
|
}
|
|
64
|
-
function parseTableRow(tr) {
|
|
111
|
+
function parseTableRow(tr, ctx) {
|
|
65
112
|
const properties = parseRowProperties(poFirstChild(tr, "w:trPr"));
|
|
66
113
|
const cells = [];
|
|
67
|
-
for (const tc of poChildrenWith(tr, "w:tc")) cells.push(parseTableCell(tc));
|
|
114
|
+
for (const tc of poChildrenWith(tr, "w:tc")) cells.push(parseTableCell(tc, ctx));
|
|
68
115
|
return {
|
|
69
116
|
properties,
|
|
70
117
|
cells
|
|
@@ -77,35 +124,39 @@ function parseRowProperties(trPr) {
|
|
|
77
124
|
if (trHeight) {
|
|
78
125
|
const val = poIntAttr(trHeight, "val");
|
|
79
126
|
const rule = poAttr(trHeight, "hRule");
|
|
80
|
-
if (val !== void 0) out.
|
|
127
|
+
if (val !== void 0) out.height = twipsToPt(val);
|
|
81
128
|
if (rule && HEIGHT_RULES.has(rule)) out.heightRule = rule;
|
|
82
129
|
}
|
|
83
130
|
if (poFirstChild(trPr, "w:cantSplit")) out.cantSplit = poToggle(poFirstChild(trPr, "w:cantSplit")) ?? true;
|
|
84
131
|
if (poFirstChild(trPr, "w:tblHeader")) out.isHeader = poToggle(poFirstChild(trPr, "w:tblHeader")) ?? true;
|
|
85
132
|
return out;
|
|
86
133
|
}
|
|
87
|
-
function parseTableCell(tc) {
|
|
134
|
+
function parseTableCell(tc, ctx) {
|
|
135
|
+
const { properties, vMerge } = parseCellProperties(poFirstChild(tc, "w:tcPr"));
|
|
88
136
|
return {
|
|
89
|
-
|
|
90
|
-
|
|
137
|
+
cell: {
|
|
138
|
+
properties,
|
|
139
|
+
content: parseBodyElements(poChildren(tc), ctx)
|
|
140
|
+
},
|
|
141
|
+
...vMerge ? { vMerge } : {}
|
|
91
142
|
};
|
|
92
143
|
}
|
|
93
144
|
function parseCellProperties(tcPr) {
|
|
94
|
-
if (!tcPr) return {};
|
|
145
|
+
if (!tcPr) return { properties: {} };
|
|
95
146
|
const out = {};
|
|
147
|
+
let rawVMerge;
|
|
96
148
|
const tcW = poFirstChild(tcPr, "w:tcW");
|
|
97
149
|
if (tcW) {
|
|
98
150
|
const w = poIntAttr(tcW, "w");
|
|
99
|
-
if (w !== void 0) out.
|
|
151
|
+
if (w !== void 0) out.width = twipsToPt(w);
|
|
100
152
|
}
|
|
101
153
|
const gridSpan = poFirstChild(tcPr, "w:gridSpan");
|
|
102
154
|
if (gridSpan) {
|
|
103
155
|
const v = poIntAttr(gridSpan, "val");
|
|
104
|
-
if (v !== void 0) out.
|
|
156
|
+
if (v !== void 0) out.colSpan = v;
|
|
105
157
|
}
|
|
106
158
|
const vMerge = poFirstChild(tcPr, "w:vMerge");
|
|
107
|
-
if (vMerge)
|
|
108
|
-
else out.vMerge = "continue";
|
|
159
|
+
if (vMerge) rawVMerge = poVal(vMerge) === "restart" ? "restart" : "continue";
|
|
109
160
|
const borders = parseBorders(poFirstChild(tcPr, "w:tcBorders"));
|
|
110
161
|
if (borders) out.borders = borders;
|
|
111
162
|
const margins = parseCellMargins(poFirstChild(tcPr, "w:tcMar"));
|
|
@@ -115,7 +166,10 @@ function parseCellProperties(tcPr) {
|
|
|
115
166
|
const fill = poAttr(shd, "fill");
|
|
116
167
|
if (fill && fill !== "auto" && /^[0-9A-Fa-f]{6}$/.test(fill)) out.shading = { colorHex: fill.toUpperCase() };
|
|
117
168
|
}
|
|
118
|
-
return
|
|
169
|
+
return {
|
|
170
|
+
properties: out,
|
|
171
|
+
...rawVMerge ? { vMerge: rawVMerge } : {}
|
|
172
|
+
};
|
|
119
173
|
}
|
|
120
174
|
function parseBorders(node) {
|
|
121
175
|
if (!node) return void 0;
|
|
@@ -141,7 +195,7 @@ function parseBorder(node) {
|
|
|
141
195
|
const sz = poIntAttr(node, "sz");
|
|
142
196
|
const color = poAttr(node, "color");
|
|
143
197
|
const out = { style: val };
|
|
144
|
-
if (sz !== void 0) out.
|
|
198
|
+
if (sz !== void 0) out.width = eighthPtToPt(sz);
|
|
145
199
|
if (color && color !== "auto" && /^[0-9A-Fa-f]{6}$/.test(color)) out.colorHex = color.toUpperCase();
|
|
146
200
|
return out;
|
|
147
201
|
}
|
|
@@ -152,10 +206,10 @@ function parseCellMargins(node) {
|
|
|
152
206
|
const bottom = poIntAttr(poFirstChild(node, "w:bottom"), "w");
|
|
153
207
|
const left = poIntAttr(poFirstChild(node, "w:left") ?? poFirstChild(node, "w:start"), "w");
|
|
154
208
|
const right = poIntAttr(poFirstChild(node, "w:right") ?? poFirstChild(node, "w:end"), "w");
|
|
155
|
-
if (top !== void 0) out.
|
|
156
|
-
if (bottom !== void 0) out.
|
|
157
|
-
if (left !== void 0) out.
|
|
158
|
-
if (right !== void 0) out.
|
|
209
|
+
if (top !== void 0) out.top = twipsToPt(top);
|
|
210
|
+
if (bottom !== void 0) out.bottom = twipsToPt(bottom);
|
|
211
|
+
if (left !== void 0) out.left = twipsToPt(left);
|
|
212
|
+
if (right !== void 0) out.right = twipsToPt(right);
|
|
159
213
|
return Object.keys(out).length > 0 ? out : void 0;
|
|
160
214
|
}
|
|
161
215
|
//#endregion
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reamkit",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Ream — DOCX/XLSX to PDF, built from scratch on the ECMA-376 and ISO 32000 specifications
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Ream — DOCX/XLSX to PDF (and SVG), built from scratch on the ECMA-376 and ISO 32000 specifications. Parse once, convert anywhere.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Alex Krassavin",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "git+https://github.com/alex-krassavin/reamkit.git"
|
|
10
10
|
},
|
|
11
|
-
"homepage": "https://
|
|
11
|
+
"homepage": "https://reamkit.dev",
|
|
12
12
|
"bugs": {
|
|
13
13
|
"url": "https://github.com/alex-krassavin/reamkit/issues"
|
|
14
14
|
},
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"import": "./dist/esm/index.js"
|
|
22
22
|
},
|
|
23
23
|
"./document-model": {
|
|
24
|
-
"types": "./dist/esm/document-model/index.d.ts",
|
|
25
|
-
"import": "./dist/esm/document-model/index.js"
|
|
24
|
+
"types": "./dist/esm/core/document-model/index.d.ts",
|
|
25
|
+
"import": "./dist/esm/core/document-model/index.js"
|
|
26
26
|
},
|
|
27
27
|
"./package.json": "./package.json"
|
|
28
28
|
},
|
|
@@ -63,7 +63,6 @@
|
|
|
63
63
|
"lint:fix": "eslint . --fix",
|
|
64
64
|
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\" \"scripts/**/*.ts\"",
|
|
65
65
|
"format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\" \"scripts/**/*.ts\"",
|
|
66
|
-
"docs:api": "tsx scripts/docs/generate-api.ts",
|
|
67
66
|
"corpus:build": "tsx scripts/corpus/build-corpus.ts",
|
|
68
67
|
"corpus:fetch": "tsx scripts/corpus/fetch-corpus.ts",
|
|
69
68
|
"corpus:sandbox:build": "docker build -t docgen-losandbox:latest scripts/corpus/sandbox/",
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { FontBytesByVariant } from '../font/index.js';
|
|
2
|
-
import { FamilyKey, FetchLike } from '../fonts/index.js';
|
|
3
|
-
import { SignatureOptions, StyledRenderOptions } from '../pdf/index.js';
|
|
4
|
-
export interface ConvertDocxOptions extends Omit<StyledRenderOptions, 'registry' | 'styles'> {
|
|
5
|
-
readonly fontBytes?: Uint8Array;
|
|
6
|
-
readonly fonts?: FontBytesByVariant;
|
|
7
|
-
readonly fontFamily?: string;
|
|
8
|
-
readonly fontFetch?: FetchLike;
|
|
9
|
-
readonly embedSource?: boolean;
|
|
10
|
-
readonly signature?: SignatureOptions;
|
|
11
|
-
}
|
|
12
|
-
export declare function convertDocxToPdfSync(docx: Uint8Array, options: ConvertDocxOptions): Uint8Array;
|
|
13
|
-
export declare function detectDocxFamilyKeys(docx: Uint8Array): Set<FamilyKey>;
|
|
14
|
-
export declare function convertDocxToPdf(docx: Uint8Array, options?: ConvertDocxOptions): Promise<Uint8Array>;
|
|
15
|
-
export declare function detectDocxFontFamily(docx: Uint8Array): string | undefined;
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
import { FontRegistry } from "../font/font-registry.js";
|
|
2
|
-
import { fetchFontSet, resolveFamilyKey } from "../fonts/remote-fonts.js";
|
|
3
|
-
import { parseChart } from "../ooxml/drawingml/chart-parser.js";
|
|
4
|
-
import { DEFAULT_THEME_PALETTE, makeColorResolver } from "../ooxml/drawingml/colors.js";
|
|
5
|
-
import { parseTheme } from "../ooxml/drawingml/theme-parser.js";
|
|
6
|
-
import { OpcPackage } from "../opc/package.js";
|
|
7
|
-
import { parseCoreProperties } from "../opc/core-properties.js";
|
|
8
|
-
import "../opc/index.js";
|
|
9
|
-
import { EMPTY_SECTION, parseDocument, parseHeaderFooter, parseSections } from "../ooxml/wordproc/document-parser.js";
|
|
10
|
-
import { EMPTY_STYLE_SHEET, parseStyles } from "../ooxml/wordproc/styles-parser.js";
|
|
11
|
-
import { loadEmbeddedFonts } from "../ooxml/wordproc/font-table.js";
|
|
12
|
-
import { EMPTY_NUMBERING, parseNumbering } from "../ooxml/wordproc/numbering-parser.js";
|
|
13
|
-
import { EMPTY_SETTINGS, parseSettings } from "../ooxml/wordproc/settings-parser.js";
|
|
14
|
-
import "../ooxml/wordproc/index.js";
|
|
15
|
-
import { signPdf } from "../pdf/signature.js";
|
|
16
|
-
import { renderStyledPdf } from "../pdf/styled-page-renderer.js";
|
|
17
|
-
import "../pdf/index.js";
|
|
18
|
-
//#region src/converter/docx-to-pdf.ts
|
|
19
|
-
var STYLES_PART = "word/styles.xml";
|
|
20
|
-
var NUMBERING_PART = "word/numbering.xml";
|
|
21
|
-
var SETTINGS_PART = "word/settings.xml";
|
|
22
|
-
var CORE_PROPS_PART = "docProps/core.xml";
|
|
23
|
-
var MAIN_DOCUMENT_PART = "word/document.xml";
|
|
24
|
-
var REL_HEADER = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header";
|
|
25
|
-
var REL_FOOTER = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer";
|
|
26
|
-
var REL_IMAGE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image";
|
|
27
|
-
var REL_THEME = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme";
|
|
28
|
-
var THEME_PART = "word/theme/theme1.xml";
|
|
29
|
-
var REL_CHART = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart";
|
|
30
|
-
function convertDocxToPdfSync(docx, options) {
|
|
31
|
-
const fonts = options.fonts ?? (options.fontBytes ? { regular: options.fontBytes } : void 0);
|
|
32
|
-
if (!fonts) throw new Error("convertDocxToPdfSync requires options.fonts or options.fontBytes");
|
|
33
|
-
const registry = FontRegistry.fromBytes(fonts);
|
|
34
|
-
const pkg = OpcPackage.open(docx);
|
|
35
|
-
const main = pkg.getMainDocument();
|
|
36
|
-
const resolveColor = buildColorResolver(pkg);
|
|
37
|
-
const body = parseDocument(main.data, resolveColor);
|
|
38
|
-
const rawSections = parseSections(main.data);
|
|
39
|
-
const stylesData = pkg.getPart(STYLES_PART);
|
|
40
|
-
const styles = stylesData ? parseStyles(stylesData) : EMPTY_STYLE_SHEET;
|
|
41
|
-
const numberingData = pkg.getPart(NUMBERING_PART);
|
|
42
|
-
const numbering = numberingData ? parseNumbering(numberingData) : EMPTY_NUMBERING;
|
|
43
|
-
const settingsData = pkg.getPart(SETTINGS_PART);
|
|
44
|
-
const settings = settingsData ? parseSettings(settingsData) : EMPTY_SETTINGS;
|
|
45
|
-
const sections = rawSections.length > 0 ? rawSections.map((s) => ({
|
|
46
|
-
...s,
|
|
47
|
-
properties: settings.evenAndOddHeaders ? {
|
|
48
|
-
...s.properties,
|
|
49
|
-
evenAndOddHeaders: true
|
|
50
|
-
} : s.properties
|
|
51
|
-
})) : [{
|
|
52
|
-
properties: settings.evenAndOddHeaders ? {
|
|
53
|
-
...EMPTY_SECTION,
|
|
54
|
-
evenAndOddHeaders: true
|
|
55
|
-
} : EMPTY_SECTION,
|
|
56
|
-
endIndex: body.length
|
|
57
|
-
}];
|
|
58
|
-
const headersFooters = loadHeadersFootersForSections(pkg, sections, resolveColor);
|
|
59
|
-
const images = loadImages(pkg);
|
|
60
|
-
const charts = loadCharts(pkg, resolveColor);
|
|
61
|
-
const embeddedFonts = loadEmbeddedFonts(pkg);
|
|
62
|
-
const coreData = pkg.getPart(CORE_PROPS_PART);
|
|
63
|
-
const coreProps = coreData ? parseCoreProperties(coreData) : void 0;
|
|
64
|
-
const { fontBytes: _ignoreA, fonts: _ignoreB, info: callerInfo, embedSource, attachments: callerAttachments, signature: _ignoreSig, ...renderOptions } = options;
|
|
65
|
-
const info = mergeInfo(coreProps, callerInfo);
|
|
66
|
-
const language = detectDocxLanguage(stylesData, main.data);
|
|
67
|
-
const attachments = [...callerAttachments ?? []];
|
|
68
|
-
if (embedSource && options.pdfA?.startsWith("PDF/A-3")) attachments.push({
|
|
69
|
-
name: "source.docx",
|
|
70
|
-
bytes: docx,
|
|
71
|
-
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
72
|
-
relationship: "Source",
|
|
73
|
-
description: "Source Word document"
|
|
74
|
-
});
|
|
75
|
-
return renderStyledPdf(body, {
|
|
76
|
-
registry,
|
|
77
|
-
styles,
|
|
78
|
-
numbering,
|
|
79
|
-
sections,
|
|
80
|
-
headersFooters,
|
|
81
|
-
images,
|
|
82
|
-
charts,
|
|
83
|
-
...embeddedFonts.size > 0 ? { embeddedFonts } : {},
|
|
84
|
-
...info ? { info } : {},
|
|
85
|
-
...language ? { language } : {},
|
|
86
|
-
...attachments.length > 0 ? { attachments } : {},
|
|
87
|
-
...renderOptions
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
function detectDocxLanguage(stylesData, documentData) {
|
|
91
|
-
const re = /<w:lang\b[^>]*\bw:val="([^"]+)"/;
|
|
92
|
-
const decoder = new TextDecoder();
|
|
93
|
-
for (const data of [stylesData, documentData]) {
|
|
94
|
-
if (!data) continue;
|
|
95
|
-
const m = re.exec(decoder.decode(data));
|
|
96
|
-
if (m?.[1]) return m[1];
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
function detectDocxFamilyKeys(docx) {
|
|
100
|
-
const keys = new Set(["roboto"]);
|
|
101
|
-
let pkg;
|
|
102
|
-
try {
|
|
103
|
-
pkg = OpcPackage.open(docx);
|
|
104
|
-
} catch {
|
|
105
|
-
return keys;
|
|
106
|
-
}
|
|
107
|
-
const decoder = new TextDecoder("utf-8");
|
|
108
|
-
const re = /<w:rFonts[^>]*\bw:ascii="([^"]+)"/g;
|
|
109
|
-
for (const part of [STYLES_PART, MAIN_DOCUMENT_PART]) {
|
|
110
|
-
const data = pkg.getPart(part);
|
|
111
|
-
if (!data) continue;
|
|
112
|
-
const xml = decoder.decode(data);
|
|
113
|
-
let m;
|
|
114
|
-
while ((m = re.exec(xml)) !== null) keys.add(resolveFamilyKey(m[1]));
|
|
115
|
-
}
|
|
116
|
-
return keys;
|
|
117
|
-
}
|
|
118
|
-
async function convertDocxToPdf(docx, options = {}) {
|
|
119
|
-
const { signature } = options;
|
|
120
|
-
const pdf = await buildUnsignedDocxPdf(docx, signature ? {
|
|
121
|
-
...options,
|
|
122
|
-
signaturePlaceholder: signature
|
|
123
|
-
} : options);
|
|
124
|
-
return signature ? signPdf(pdf, signature) : pdf;
|
|
125
|
-
}
|
|
126
|
-
async function buildUnsignedDocxPdf(docx, options) {
|
|
127
|
-
if (options.fonts ?? options.fontBytes) return convertDocxToPdfSync(docx, options);
|
|
128
|
-
const fetchOpt = options.fontFetch ? { fetch: options.fontFetch } : {};
|
|
129
|
-
const keys = options.fontFamily ? new Set([resolveFamilyKey(options.fontFamily)]) : detectDocxFamilyKeys(docx);
|
|
130
|
-
if (keys.size <= 1) {
|
|
131
|
-
const family = keys.values().next().value;
|
|
132
|
-
const fonts = await fetchFontSet({
|
|
133
|
-
...family ? { family } : {},
|
|
134
|
-
...fetchOpt
|
|
135
|
-
});
|
|
136
|
-
return convertDocxToPdfSync(docx, {
|
|
137
|
-
...options,
|
|
138
|
-
fonts
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
const registriesByFamily = /* @__PURE__ */ new Map();
|
|
142
|
-
let baseBytes;
|
|
143
|
-
for (const key of keys) {
|
|
144
|
-
const bytes = await fetchFontSet({
|
|
145
|
-
family: key,
|
|
146
|
-
...fetchOpt
|
|
147
|
-
});
|
|
148
|
-
registriesByFamily.set(key, FontRegistry.fromBytes(bytes));
|
|
149
|
-
if (key === "roboto" || !baseBytes) baseBytes = bytes;
|
|
150
|
-
}
|
|
151
|
-
return convertDocxToPdfSync(docx, {
|
|
152
|
-
...options,
|
|
153
|
-
fonts: baseBytes,
|
|
154
|
-
registriesByFamily
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
function mergeInfo(core, caller) {
|
|
158
|
-
if (!core && !caller) return void 0;
|
|
159
|
-
return {
|
|
160
|
-
...core?.title ? { title: core.title } : {},
|
|
161
|
-
...core?.creator ? { author: core.creator } : {},
|
|
162
|
-
...core?.subject ? { subject: core.subject } : {},
|
|
163
|
-
...core?.keywords ? { keywords: core.keywords } : {},
|
|
164
|
-
...core?.created ? { creationDate: core.created } : {},
|
|
165
|
-
...core?.modified ? { modificationDate: core.modified } : {},
|
|
166
|
-
...caller
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
function loadImages(pkg) {
|
|
170
|
-
const rels = pkg.getPartRelationships(MAIN_DOCUMENT_PART);
|
|
171
|
-
if (rels.length === 0) return /* @__PURE__ */ new Map();
|
|
172
|
-
const out = /* @__PURE__ */ new Map();
|
|
173
|
-
for (const rel of rels) {
|
|
174
|
-
if (rel.type !== REL_IMAGE) continue;
|
|
175
|
-
const resolved = pkg.resolveRelatedPart(MAIN_DOCUMENT_PART, rel);
|
|
176
|
-
if (!resolved) continue;
|
|
177
|
-
out.set(rel.id, resolved.data);
|
|
178
|
-
}
|
|
179
|
-
return out;
|
|
180
|
-
}
|
|
181
|
-
function loadCharts(pkg, resolveColor) {
|
|
182
|
-
const out = /* @__PURE__ */ new Map();
|
|
183
|
-
for (const rel of pkg.getPartRelationships(MAIN_DOCUMENT_PART)) {
|
|
184
|
-
if (rel.type !== REL_CHART) continue;
|
|
185
|
-
const resolved = pkg.resolveRelatedPart(MAIN_DOCUMENT_PART, rel);
|
|
186
|
-
if (!resolved) continue;
|
|
187
|
-
const chart = parseChart(resolved.data, resolveColor);
|
|
188
|
-
if (chart) out.set(rel.id, chart);
|
|
189
|
-
}
|
|
190
|
-
return out;
|
|
191
|
-
}
|
|
192
|
-
function buildColorResolver(pkg) {
|
|
193
|
-
const themeData = loadTheme(pkg);
|
|
194
|
-
if (!themeData) return makeColorResolver(DEFAULT_THEME_PALETTE);
|
|
195
|
-
const palette = new Map(DEFAULT_THEME_PALETTE);
|
|
196
|
-
for (const [slot, hex] of parseTheme(themeData)) palette.set(slot, hex);
|
|
197
|
-
return makeColorResolver(palette);
|
|
198
|
-
}
|
|
199
|
-
function loadTheme(pkg) {
|
|
200
|
-
for (const rel of pkg.getPartRelationships(MAIN_DOCUMENT_PART)) {
|
|
201
|
-
if (rel.type !== REL_THEME) continue;
|
|
202
|
-
const resolved = pkg.resolveRelatedPart(MAIN_DOCUMENT_PART, rel);
|
|
203
|
-
if (resolved) return resolved.data;
|
|
204
|
-
}
|
|
205
|
-
return pkg.getPart(THEME_PART);
|
|
206
|
-
}
|
|
207
|
-
function loadHeadersFootersForSections(pkg, sections, resolveColor) {
|
|
208
|
-
const wanted = /* @__PURE__ */ new Set();
|
|
209
|
-
for (const s of sections) {
|
|
210
|
-
for (const h of s.properties.headers) wanted.add(h.relationshipId);
|
|
211
|
-
for (const f of s.properties.footers) wanted.add(f.relationshipId);
|
|
212
|
-
}
|
|
213
|
-
if (wanted.size === 0) return /* @__PURE__ */ new Map();
|
|
214
|
-
const rels = pkg.getPartRelationships(MAIN_DOCUMENT_PART);
|
|
215
|
-
if (rels.length === 0) return /* @__PURE__ */ new Map();
|
|
216
|
-
const out = /* @__PURE__ */ new Map();
|
|
217
|
-
for (const rel of rels) {
|
|
218
|
-
if (!wanted.has(rel.id)) continue;
|
|
219
|
-
if (rel.type !== REL_HEADER && rel.type !== REL_FOOTER) continue;
|
|
220
|
-
const resolved = pkg.resolveRelatedPart(MAIN_DOCUMENT_PART, rel);
|
|
221
|
-
if (!resolved) continue;
|
|
222
|
-
out.set(rel.id, parseHeaderFooter(resolved.data, resolveColor));
|
|
223
|
-
}
|
|
224
|
-
return out;
|
|
225
|
-
}
|
|
226
|
-
//#endregion
|
|
227
|
-
export { convertDocxToPdf, convertDocxToPdfSync };
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { convertDocxToPdf, convertDocxToPdfSync, detectDocxFontFamily, } from './docx-to-pdf.js';
|
|
2
|
-
export type { ConvertDocxOptions } from './docx-to-pdf.js';
|
|
3
|
-
export { convertXlsxToPdf, convertXlsxToPdfSync } from './xlsx-to-pdf.js';
|
|
4
|
-
export type { ConvertXlsxOptions } from './xlsx-to-pdf.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { AbstractNumbering, Alignment, Border, BorderStyle, BodyElement, CellBorders, CellMargins, CellProperties, CellShading, Chart, ChartBlock, ChartDataPoint, ChartSeries, ChartType, CustomGeometry, CustomPathCmd, DocumentModel, FontFamilyMap, HeaderFooterReference, HeaderFooterType, ImageBlock, InlineImage, MathAccent, MathBar, MathDelimiter, MathEqArray, MathFraction, MathFunc, MathGroupChr, MathLimit, MathMatrix, MathNary, MathNode, MathRadical, MathRow, MathRun, MathScript, Numbering, NumberingFormat, NumberingInstance, NumberingLevel, NumberingReference, PageMargins, PageSize, Paragraph, ParagraphProperties, Run, RunProperties, RowProperties, Section, SectionProperties, ShapeBlock, ShapeDash, ShapeFill, ShapeFillKind, ShapeGeometry, ShapeLine, ShapeTextBody, ShapeTransform, Style, StyleSheet, StyleType, Table, TableCell, TableProperties, TableRow, UnderlineStyle, VerticalAlign, } from './types.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { NumberingState, formatLevelMarker } from './state.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * as wordproc from './wordproc/index.js';
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { BodyElement, Section, SectionProperties } from '../../document-model/index.js';
|
|
2
|
-
import { ColorResolver } from '../drawingml/colors.js';
|
|
3
|
-
import { PoNode } from './po-helpers.js';
|
|
4
|
-
export declare function parseDocument(documentXml: Uint8Array, resolveColor?: ColorResolver): Array<BodyElement>;
|
|
5
|
-
export declare const EMPTY_SECTION: SectionProperties;
|
|
6
|
-
export declare function parseSection(documentXml: Uint8Array): SectionProperties;
|
|
7
|
-
export declare function parseSections(documentXml: Uint8Array): Array<Section>;
|
|
8
|
-
export declare function parseHeaderFooter(xml: Uint8Array, resolveColor?: ColorResolver): Array<BodyElement>;
|
|
9
|
-
export declare function parseBodyElements(children: ReadonlyArray<PoNode>, resolveColor?: ColorResolver): Array<BodyElement>;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ParagraphProperties, RunProperties, StyleSheet } from '../document-model/index.js';
|
|
2
|
-
import { ResolvedParagraphProperties, ResolvedRunProperties } from './types.js';
|
|
3
|
-
export declare function resolveRunProperties(runDirect: RunProperties, paragraphDirect: ParagraphProperties, sheet: StyleSheet): ResolvedRunProperties;
|
|
4
|
-
export declare function resolveParagraphProperties(paragraphDirect: ParagraphProperties, sheet: StyleSheet): ResolvedParagraphProperties;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|