ooxml.js 2.4.0 → 2.5.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 +40 -2
- package/dist/codec.cjs +28 -0
- package/dist/codec.d.cts +72 -0
- package/dist/codec.d.ts +72 -0
- package/dist/codec.js +24 -0
- package/dist/compact.cjs +162 -0
- package/dist/compact.d.cts +70 -0
- package/dist/compact.d.ts +70 -0
- package/dist/compact.js +152 -0
- package/dist/image/sniff.cjs +28 -0
- package/dist/image/sniff.d.cts +5 -0
- package/dist/image/sniff.d.ts +5 -0
- package/dist/image/sniff.js +27 -0
- package/dist/index.cjs +83 -3025
- package/dist/index.d.cts +22 -527
- package/dist/index.d.ts +22 -527
- package/dist/index.js +22 -2964
- package/dist/model/node.cjs +67 -0
- package/dist/model/node.d.cts +2 -0
- package/dist/model/node.d.ts +2 -0
- package/dist/model/node.js +58 -0
- package/dist/model/package.cjs +19 -0
- package/dist/model/package.d.cts +2 -0
- package/dist/model/package.d.ts +2 -0
- package/dist/model/package.js +15 -0
- package/dist/node-CkBWRjNR.d.cts +83 -0
- package/dist/node-CkBWRjNR.d.ts +83 -0
- package/dist/package-BUojjTXf.d.ts +114 -0
- package/dist/package-L24lkba-.d.cts +114 -0
- package/dist/package-io/read.cjs +33 -0
- package/dist/package-io/read.d.cts +5 -0
- package/dist/package-io/read.d.ts +5 -0
- package/dist/package-io/read.js +32 -0
- package/dist/package-io/write.cjs +18 -0
- package/dist/package-io/write.d.cts +5 -0
- package/dist/package-io/write.d.ts +5 -0
- package/dist/package-io/write.js +17 -0
- package/dist/typed/docx/read.cjs +332 -0
- package/dist/typed/docx/read.d.cts +52 -0
- package/dist/typed/docx/read.d.ts +52 -0
- package/dist/typed/docx/read.js +328 -0
- package/dist/typed/docx/styles.cjs +148 -0
- package/dist/typed/docx/styles.d.cts +29 -0
- package/dist/typed/docx/styles.d.ts +29 -0
- package/dist/typed/docx/styles.js +146 -0
- package/dist/typed/pptx/inherit.cjs +96 -0
- package/dist/typed/pptx/inherit.d.cts +30 -0
- package/dist/typed/pptx/inherit.d.ts +30 -0
- package/dist/typed/pptx/inherit.js +90 -0
- package/dist/typed/pptx/read.cjs +364 -0
- package/dist/typed/pptx/read.d.cts +44 -0
- package/dist/typed/pptx/read.d.ts +44 -0
- package/dist/typed/pptx/read.js +362 -0
- package/dist/typed/shared/color.cjs +85 -0
- package/dist/typed/shared/color.d.cts +9 -0
- package/dist/typed/shared/color.d.ts +9 -0
- package/dist/typed/shared/color.js +84 -0
- package/dist/typed/shared/drawingml.cjs +191 -0
- package/dist/typed/shared/drawingml.d.cts +40 -0
- package/dist/typed/shared/drawingml.d.ts +40 -0
- package/dist/typed/shared/drawingml.js +180 -0
- package/dist/typed/shared/metadata.cjs +44 -0
- package/dist/typed/shared/metadata.d.cts +16 -0
- package/dist/typed/shared/metadata.d.ts +16 -0
- package/dist/typed/shared/metadata.js +42 -0
- package/dist/typed/shared/source-path.cjs +18 -0
- package/dist/typed/shared/source-path.d.cts +5 -0
- package/dist/typed/shared/source-path.d.ts +5 -0
- package/dist/typed/shared/source-path.js +17 -0
- package/dist/typed/shared/units.cjs +55 -0
- package/dist/typed/shared/units.d.cts +20 -0
- package/dist/typed/shared/units.d.ts +20 -0
- package/dist/typed/shared/units.js +38 -0
- package/dist/typed/util.cjs +85 -0
- package/dist/typed/util.d.cts +18 -0
- package/dist/typed/util.d.ts +18 -0
- package/dist/typed/util.js +77 -0
- package/dist/typed/xlsx/a1.cjs +64 -0
- package/dist/typed/xlsx/a1.d.cts +19 -0
- package/dist/typed/xlsx/a1.d.ts +19 -0
- package/dist/typed/xlsx/a1.js +58 -0
- package/dist/typed/xlsx/build.cjs +456 -0
- package/dist/typed/xlsx/build.d.cts +6 -0
- package/dist/typed/xlsx/build.d.ts +6 -0
- package/dist/typed/xlsx/build.js +455 -0
- package/dist/typed/xlsx/content.cjs +257 -0
- package/dist/typed/xlsx/content.d.cts +6 -0
- package/dist/typed/xlsx/content.d.ts +6 -0
- package/dist/typed/xlsx/content.js +256 -0
- package/dist/typed/xlsx/defined-names.cjs +90 -0
- package/dist/typed/xlsx/defined-names.d.cts +20 -0
- package/dist/typed/xlsx/defined-names.d.ts +20 -0
- package/dist/typed/xlsx/defined-names.js +83 -0
- package/dist/typed/xlsx/print-settings.cjs +116 -0
- package/dist/typed/xlsx/print-settings.d.cts +8 -0
- package/dist/typed/xlsx/print-settings.d.ts +8 -0
- package/dist/typed/xlsx/print-settings.js +114 -0
- package/dist/typed/xlsx/shared-strings.cjs +35 -0
- package/dist/typed/xlsx/shared-strings.d.cts +12 -0
- package/dist/typed/xlsx/shared-strings.d.ts +12 -0
- package/dist/typed/xlsx/shared-strings.js +33 -0
- package/dist/typed/xlsx/units.cjs +21 -0
- package/dist/typed/xlsx/units.d.cts +8 -0
- package/dist/typed/xlsx/units.d.ts +8 -0
- package/dist/typed/xlsx/units.js +16 -0
- package/dist/typed/xlsx/util.cjs +53 -0
- package/dist/typed/xlsx/util.d.cts +10 -0
- package/dist/typed/xlsx/util.d.ts +10 -0
- package/dist/typed/xlsx/util.js +47 -0
- package/dist/typed/xlsx.cjs +140 -0
- package/dist/typed/xlsx.d.cts +43 -0
- package/dist/typed/xlsx.d.ts +43 -0
- package/dist/typed/xlsx.js +135 -0
- package/dist/util/base64.cjs +48 -0
- package/dist/util/base64.d.cts +5 -0
- package/dist/util/base64.d.ts +5 -0
- package/dist/util/base64.js +46 -0
- package/dist/xml/build.cjs +46 -0
- package/dist/xml/build.d.cts +5 -0
- package/dist/xml/build.d.ts +5 -0
- package/dist/xml/build.js +46 -0
- package/dist/xml/entities.cjs +7 -0
- package/dist/xml/entities.d.cts +4 -0
- package/dist/xml/entities.d.ts +4 -0
- package/dist/xml/entities.js +6 -0
- package/dist/xml/fragment.cjs +22 -0
- package/dist/xml/fragment.d.cts +6 -0
- package/dist/xml/fragment.d.ts +6 -0
- package/dist/xml/fragment.js +20 -0
- package/dist/xml/parse.cjs +88 -0
- package/dist/xml/parse.d.cts +5 -0
- package/dist/xml/parse.d.ts +5 -0
- package/dist/xml/parse.js +88 -0
- package/dist/zip.cjs +12 -0
- package/dist/zip.d.cts +5 -0
- package/dist/zip.d.ts +5 -0
- package/dist/zip.js +10 -0
- package/package.json +9 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { attr, childrenWithTag, rootElement, textContent } from "../util.js";
|
|
2
|
+
import { columnIndexToLetters, columnLettersToIndex, parseRangeReference, rangeReference } from "./a1.js";
|
|
3
|
+
//#region src/typed/xlsx/defined-names.ts
|
|
4
|
+
const XLNM_PRINT_AREA = "_xlnm.Print_Area";
|
|
5
|
+
const XLNM_PRINT_TITLES = "_xlnm.Print_Titles";
|
|
6
|
+
function readDefinedNamesBySheet(pkg) {
|
|
7
|
+
const map = /* @__PURE__ */ new Map();
|
|
8
|
+
const workbook = rootElement(pkg.parts["xl/workbook.xml"]);
|
|
9
|
+
if (workbook === void 0) return map;
|
|
10
|
+
const container = childrenWithTag(workbook, "definedNames")[0];
|
|
11
|
+
if (container === void 0) return map;
|
|
12
|
+
for (const definedName of childrenWithTag(container, "definedName")) {
|
|
13
|
+
const name = attr(definedName, "name");
|
|
14
|
+
const localSheetIdRaw = attr(definedName, "localSheetId");
|
|
15
|
+
if (name === void 0 || localSheetIdRaw === void 0) continue;
|
|
16
|
+
if (name !== "_xlnm.Print_Area" && name !== "_xlnm.Print_Titles") continue;
|
|
17
|
+
const sheetIndex = Number.parseInt(localSheetIdRaw, 10);
|
|
18
|
+
if (!Number.isInteger(sheetIndex) || sheetIndex < 0) continue;
|
|
19
|
+
const value = textContent(definedName);
|
|
20
|
+
const existing = map.get(sheetIndex) ?? {};
|
|
21
|
+
if (name === "_xlnm.Print_Area") existing.printArea = value;
|
|
22
|
+
else existing.printTitles = value;
|
|
23
|
+
map.set(sheetIndex, existing);
|
|
24
|
+
}
|
|
25
|
+
return map;
|
|
26
|
+
}
|
|
27
|
+
function stripSheetPrefix(segment) {
|
|
28
|
+
const bang = segment.lastIndexOf("!");
|
|
29
|
+
return bang === -1 ? segment : segment.slice(bang + 1);
|
|
30
|
+
}
|
|
31
|
+
function parsePrintAreaValue(value) {
|
|
32
|
+
const first = value.split(",")[0]?.trim();
|
|
33
|
+
if (first === void 0 || first.length === 0) return;
|
|
34
|
+
return parseRangeReference(stripSheetPrefix(first).replace(/\$/g, ""));
|
|
35
|
+
}
|
|
36
|
+
function parsePrintTitlesValue(value) {
|
|
37
|
+
const result = {};
|
|
38
|
+
for (const rawSegment of value.split(",")) {
|
|
39
|
+
const segment = stripSheetPrefix(rawSegment.trim()).replace(/\$/g, "");
|
|
40
|
+
const separatorIndex = segment.indexOf(":");
|
|
41
|
+
if (separatorIndex === -1) continue;
|
|
42
|
+
const startSpec = segment.slice(0, separatorIndex);
|
|
43
|
+
const endSpec = segment.slice(separatorIndex + 1);
|
|
44
|
+
if (/^[A-Za-z]+$/.test(startSpec) && /^[A-Za-z]+$/.test(endSpec)) {
|
|
45
|
+
const start = columnLettersToIndex(startSpec);
|
|
46
|
+
const end = columnLettersToIndex(endSpec);
|
|
47
|
+
if (start !== void 0 && end !== void 0) result.repeatColumns = {
|
|
48
|
+
start: Math.min(start, end),
|
|
49
|
+
end: Math.max(start, end)
|
|
50
|
+
};
|
|
51
|
+
} else if (/^\d+$/.test(startSpec) && /^\d+$/.test(endSpec)) {
|
|
52
|
+
const start = Number.parseInt(startSpec, 10) - 1;
|
|
53
|
+
const end = Number.parseInt(endSpec, 10) - 1;
|
|
54
|
+
result.repeatRows = {
|
|
55
|
+
start: Math.min(start, end),
|
|
56
|
+
end: Math.max(start, end)
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
function quoteSheetNameIfNeeded(sheetName) {
|
|
63
|
+
if (/^[A-Za-z_][A-Za-z0-9_]*$/.test(sheetName)) return sheetName;
|
|
64
|
+
return `'${sheetName.replace(/'/g, "''")}'`;
|
|
65
|
+
}
|
|
66
|
+
function buildPrintAreaValue(sheetName, range) {
|
|
67
|
+
const dollared = rangeReference({
|
|
68
|
+
startRow: range.startRow,
|
|
69
|
+
startColumn: range.startColumn,
|
|
70
|
+
endRow: range.endRow,
|
|
71
|
+
endColumn: range.endColumn
|
|
72
|
+
}).replace(/([A-Z]+)(\d+)/g, "$$$1$$$2");
|
|
73
|
+
return `${quoteSheetNameIfNeeded(sheetName)}!${dollared}`;
|
|
74
|
+
}
|
|
75
|
+
function buildPrintTitlesValue(sheetName, repeatRows, repeatColumns) {
|
|
76
|
+
const quotedName = quoteSheetNameIfNeeded(sheetName);
|
|
77
|
+
const segments = [];
|
|
78
|
+
if (repeatColumns !== void 0) segments.push(`${quotedName}!$${columnIndexToLetters(repeatColumns.start)}:$${columnIndexToLetters(repeatColumns.end)}`);
|
|
79
|
+
if (repeatRows !== void 0) segments.push(`${quotedName}!$${repeatRows.start + 1}:$${repeatRows.end + 1}`);
|
|
80
|
+
return segments.length > 0 ? segments.join(",") : void 0;
|
|
81
|
+
}
|
|
82
|
+
//#endregion
|
|
83
|
+
export { XLNM_PRINT_AREA, XLNM_PRINT_TITLES, buildPrintAreaValue, buildPrintTitlesValue, parsePrintAreaValue, parsePrintTitlesValue, readDefinedNamesBySheet };
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_typed_util = require("../util.cjs");
|
|
3
|
+
require("../shared/units.cjs");
|
|
4
|
+
const require_typed_xlsx_defined_names = require("./defined-names.cjs");
|
|
5
|
+
const require_typed_xlsx_util = require("./util.cjs");
|
|
6
|
+
let document_schema_js = require("document-schema.js");
|
|
7
|
+
//#region src/typed/xlsx/print-settings.ts
|
|
8
|
+
const DEFAULT_MARGINS = {
|
|
9
|
+
topPt: .75 * 72,
|
|
10
|
+
rightPt: .7 * 72,
|
|
11
|
+
bottomPt: .75 * 72,
|
|
12
|
+
leftPt: .7 * 72
|
|
13
|
+
};
|
|
14
|
+
const DEFAULT_HEADER_FOOTER_MARGIN_PT = .3 * 72;
|
|
15
|
+
const DEFAULT_FIT_TO_PAGES = 1;
|
|
16
|
+
function applyOrientation(pageSize, pageSetup) {
|
|
17
|
+
if ((pageSetup === void 0 ? void 0 : require_typed_util.attr(pageSetup, "orientation")) !== "landscape") return pageSize;
|
|
18
|
+
return {
|
|
19
|
+
widthPt: pageSize.heightPt,
|
|
20
|
+
heightPt: pageSize.widthPt
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function readPageSize(pageSetup) {
|
|
24
|
+
if (pageSetup === void 0) return document_schema_js.PAGE_SIZE_LETTER;
|
|
25
|
+
const paperSize = require_typed_util.attr(pageSetup, "paperSize");
|
|
26
|
+
const byCode = paperSize === void 0 ? void 0 : require_typed_xlsx_util.paperSizeCodeToPageSize(paperSize);
|
|
27
|
+
if (byCode !== void 0) return applyOrientation(byCode, pageSetup);
|
|
28
|
+
const paperWidth = require_typed_util.attr(pageSetup, "paperWidth");
|
|
29
|
+
const paperHeight = require_typed_util.attr(pageSetup, "paperHeight");
|
|
30
|
+
const widthPt = paperWidth === void 0 ? void 0 : require_typed_xlsx_util.parseUniversalMeasureToPt(paperWidth);
|
|
31
|
+
const heightPt = paperHeight === void 0 ? void 0 : require_typed_xlsx_util.parseUniversalMeasureToPt(paperHeight);
|
|
32
|
+
return widthPt === void 0 || heightPt === void 0 ? document_schema_js.PAGE_SIZE_LETTER : applyOrientation({
|
|
33
|
+
widthPt,
|
|
34
|
+
heightPt
|
|
35
|
+
}, pageSetup);
|
|
36
|
+
}
|
|
37
|
+
function readMargins(pageMargins) {
|
|
38
|
+
if (pageMargins === void 0) return DEFAULT_MARGINS;
|
|
39
|
+
const top = require_typed_util.attr(pageMargins, "top");
|
|
40
|
+
const right = require_typed_util.attr(pageMargins, "right");
|
|
41
|
+
const bottom = require_typed_util.attr(pageMargins, "bottom");
|
|
42
|
+
const left = require_typed_util.attr(pageMargins, "left");
|
|
43
|
+
return {
|
|
44
|
+
topPt: top === void 0 ? DEFAULT_MARGINS.topPt : Number(top) * 72,
|
|
45
|
+
rightPt: right === void 0 ? DEFAULT_MARGINS.rightPt : Number(right) * 72,
|
|
46
|
+
bottomPt: bottom === void 0 ? DEFAULT_MARGINS.bottomPt : Number(bottom) * 72,
|
|
47
|
+
leftPt: left === void 0 ? DEFAULT_MARGINS.leftPt : Number(left) * 72
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function readPageOrder(pageSetup) {
|
|
51
|
+
return (pageSetup === void 0 ? void 0 : require_typed_util.attr(pageSetup, "pageOrder")) === "overThenDown" ? "overThenDown" : "downThenOver";
|
|
52
|
+
}
|
|
53
|
+
function readManualBreaks(worksheet) {
|
|
54
|
+
const rowBreaksEl = require_typed_util.childrenWithTag(worksheet, "rowBreaks")[0];
|
|
55
|
+
const colBreaksEl = require_typed_util.childrenWithTag(worksheet, "colBreaks")[0];
|
|
56
|
+
const rows = rowBreaksEl === void 0 ? [] : readBreakIndices(rowBreaksEl);
|
|
57
|
+
const columns = colBreaksEl === void 0 ? [] : readBreakIndices(colBreaksEl);
|
|
58
|
+
return rows.length > 0 || columns.length > 0 ? {
|
|
59
|
+
rows,
|
|
60
|
+
columns
|
|
61
|
+
} : void 0;
|
|
62
|
+
}
|
|
63
|
+
function readBreakIndices(container) {
|
|
64
|
+
const indices = [];
|
|
65
|
+
for (const brk of require_typed_util.childrenWithTag(container, "brk")) {
|
|
66
|
+
const id = require_typed_util.attr(brk, "id");
|
|
67
|
+
const index = id === void 0 ? void 0 : Number.parseInt(id, 10);
|
|
68
|
+
if (index !== void 0 && Number.isInteger(index) && index >= 0) indices.push(index);
|
|
69
|
+
}
|
|
70
|
+
return indices;
|
|
71
|
+
}
|
|
72
|
+
function readPrintSettings(worksheet, sheetIndex, definedNamesBySheet) {
|
|
73
|
+
const sheetPr = require_typed_util.childrenWithTag(worksheet, "sheetPr")[0];
|
|
74
|
+
const pageSetUpPr = sheetPr === void 0 ? void 0 : require_typed_util.childrenWithTag(sheetPr, "pageSetUpPr")[0];
|
|
75
|
+
const fitToPage = require_typed_xlsx_util.readXmlBool(pageSetUpPr === void 0 ? void 0 : require_typed_util.attr(pageSetUpPr, "fitToPage"));
|
|
76
|
+
const pageSetup = require_typed_util.childrenWithTag(worksheet, "pageSetup")[0];
|
|
77
|
+
const pageMargins = require_typed_util.childrenWithTag(worksheet, "pageMargins")[0];
|
|
78
|
+
const printOptions = require_typed_util.childrenWithTag(worksheet, "printOptions")[0];
|
|
79
|
+
const manualBreaks = readManualBreaks(worksheet);
|
|
80
|
+
const definedNames = definedNamesBySheet.get(sheetIndex);
|
|
81
|
+
const settings = {
|
|
82
|
+
pageSize: readPageSize(pageSetup),
|
|
83
|
+
margins: readMargins(pageMargins),
|
|
84
|
+
gridlines: require_typed_xlsx_util.readXmlBool(printOptions === void 0 ? void 0 : require_typed_util.attr(printOptions, "gridLines")),
|
|
85
|
+
headers: require_typed_xlsx_util.readXmlBool(printOptions === void 0 ? void 0 : require_typed_util.attr(printOptions, "headings")),
|
|
86
|
+
pageOrder: readPageOrder(pageSetup)
|
|
87
|
+
};
|
|
88
|
+
if (fitToPage) {
|
|
89
|
+
const fitToWidthRaw = pageSetup === void 0 ? void 0 : require_typed_util.attr(pageSetup, "fitToWidth");
|
|
90
|
+
const fitToHeightRaw = pageSetup === void 0 ? void 0 : require_typed_util.attr(pageSetup, "fitToHeight");
|
|
91
|
+
settings.fitToPages = {
|
|
92
|
+
width: fitToWidthRaw === void 0 ? DEFAULT_FIT_TO_PAGES : Number(fitToWidthRaw),
|
|
93
|
+
height: fitToHeightRaw === void 0 ? DEFAULT_FIT_TO_PAGES : Number(fitToHeightRaw)
|
|
94
|
+
};
|
|
95
|
+
} else {
|
|
96
|
+
const scaleRaw = pageSetup === void 0 ? void 0 : require_typed_util.attr(pageSetup, "scale");
|
|
97
|
+
if (scaleRaw !== void 0) {
|
|
98
|
+
const scale = Number(scaleRaw);
|
|
99
|
+
if (Number.isFinite(scale)) settings.scale = scale;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (manualBreaks !== void 0) settings.manualBreaks = manualBreaks;
|
|
103
|
+
if (definedNames?.printArea !== void 0) {
|
|
104
|
+
const range = require_typed_xlsx_defined_names.parsePrintAreaValue(definedNames.printArea);
|
|
105
|
+
if (range !== void 0) settings.printRange = range;
|
|
106
|
+
}
|
|
107
|
+
if (definedNames?.printTitles !== void 0) {
|
|
108
|
+
const titles = require_typed_xlsx_defined_names.parsePrintTitlesValue(definedNames.printTitles);
|
|
109
|
+
if (titles.repeatRows !== void 0) settings.repeatRows = titles.repeatRows;
|
|
110
|
+
if (titles.repeatColumns !== void 0) settings.repeatColumns = titles.repeatColumns;
|
|
111
|
+
}
|
|
112
|
+
return settings;
|
|
113
|
+
}
|
|
114
|
+
//#endregion
|
|
115
|
+
exports.DEFAULT_HEADER_FOOTER_MARGIN_PT = DEFAULT_HEADER_FOOTER_MARGIN_PT;
|
|
116
|
+
exports.readPrintSettings = readPrintSettings;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { l as XmlElement } from "../../node-CkBWRjNR.cjs";
|
|
2
|
+
import { SheetDefinedNames } from "./defined-names.cjs";
|
|
3
|
+
import { ContentSheetPrintSettings } from "document-schema.js";
|
|
4
|
+
//#region src/typed/xlsx/print-settings.d.ts
|
|
5
|
+
declare const DEFAULT_HEADER_FOOTER_MARGIN_PT: number;
|
|
6
|
+
declare function readPrintSettings(worksheet: XmlElement, sheetIndex: number, definedNamesBySheet: ReadonlyMap<number, SheetDefinedNames>): ContentSheetPrintSettings;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { DEFAULT_HEADER_FOOTER_MARGIN_PT, readPrintSettings };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { l as XmlElement } from "../../node-CkBWRjNR.js";
|
|
2
|
+
import { SheetDefinedNames } from "./defined-names.js";
|
|
3
|
+
import { ContentSheetPrintSettings } from "document-schema.js";
|
|
4
|
+
//#region src/typed/xlsx/print-settings.d.ts
|
|
5
|
+
declare const DEFAULT_HEADER_FOOTER_MARGIN_PT: number;
|
|
6
|
+
declare function readPrintSettings(worksheet: XmlElement, sheetIndex: number, definedNamesBySheet: ReadonlyMap<number, SheetDefinedNames>): ContentSheetPrintSettings;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { DEFAULT_HEADER_FOOTER_MARGIN_PT, readPrintSettings };
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { attr, childrenWithTag } from "../util.js";
|
|
2
|
+
import "../shared/units.js";
|
|
3
|
+
import { parsePrintAreaValue, parsePrintTitlesValue } from "./defined-names.js";
|
|
4
|
+
import { paperSizeCodeToPageSize, parseUniversalMeasureToPt, readXmlBool } from "./util.js";
|
|
5
|
+
import { PAGE_SIZE_LETTER } from "document-schema.js";
|
|
6
|
+
//#region src/typed/xlsx/print-settings.ts
|
|
7
|
+
const DEFAULT_MARGINS = {
|
|
8
|
+
topPt: .75 * 72,
|
|
9
|
+
rightPt: .7 * 72,
|
|
10
|
+
bottomPt: .75 * 72,
|
|
11
|
+
leftPt: .7 * 72
|
|
12
|
+
};
|
|
13
|
+
const DEFAULT_HEADER_FOOTER_MARGIN_PT = .3 * 72;
|
|
14
|
+
const DEFAULT_FIT_TO_PAGES = 1;
|
|
15
|
+
function applyOrientation(pageSize, pageSetup) {
|
|
16
|
+
if ((pageSetup === void 0 ? void 0 : attr(pageSetup, "orientation")) !== "landscape") return pageSize;
|
|
17
|
+
return {
|
|
18
|
+
widthPt: pageSize.heightPt,
|
|
19
|
+
heightPt: pageSize.widthPt
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function readPageSize(pageSetup) {
|
|
23
|
+
if (pageSetup === void 0) return PAGE_SIZE_LETTER;
|
|
24
|
+
const paperSize = attr(pageSetup, "paperSize");
|
|
25
|
+
const byCode = paperSize === void 0 ? void 0 : paperSizeCodeToPageSize(paperSize);
|
|
26
|
+
if (byCode !== void 0) return applyOrientation(byCode, pageSetup);
|
|
27
|
+
const paperWidth = attr(pageSetup, "paperWidth");
|
|
28
|
+
const paperHeight = attr(pageSetup, "paperHeight");
|
|
29
|
+
const widthPt = paperWidth === void 0 ? void 0 : parseUniversalMeasureToPt(paperWidth);
|
|
30
|
+
const heightPt = paperHeight === void 0 ? void 0 : parseUniversalMeasureToPt(paperHeight);
|
|
31
|
+
return widthPt === void 0 || heightPt === void 0 ? PAGE_SIZE_LETTER : applyOrientation({
|
|
32
|
+
widthPt,
|
|
33
|
+
heightPt
|
|
34
|
+
}, pageSetup);
|
|
35
|
+
}
|
|
36
|
+
function readMargins(pageMargins) {
|
|
37
|
+
if (pageMargins === void 0) return DEFAULT_MARGINS;
|
|
38
|
+
const top = attr(pageMargins, "top");
|
|
39
|
+
const right = attr(pageMargins, "right");
|
|
40
|
+
const bottom = attr(pageMargins, "bottom");
|
|
41
|
+
const left = attr(pageMargins, "left");
|
|
42
|
+
return {
|
|
43
|
+
topPt: top === void 0 ? DEFAULT_MARGINS.topPt : Number(top) * 72,
|
|
44
|
+
rightPt: right === void 0 ? DEFAULT_MARGINS.rightPt : Number(right) * 72,
|
|
45
|
+
bottomPt: bottom === void 0 ? DEFAULT_MARGINS.bottomPt : Number(bottom) * 72,
|
|
46
|
+
leftPt: left === void 0 ? DEFAULT_MARGINS.leftPt : Number(left) * 72
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function readPageOrder(pageSetup) {
|
|
50
|
+
return (pageSetup === void 0 ? void 0 : attr(pageSetup, "pageOrder")) === "overThenDown" ? "overThenDown" : "downThenOver";
|
|
51
|
+
}
|
|
52
|
+
function readManualBreaks(worksheet) {
|
|
53
|
+
const rowBreaksEl = childrenWithTag(worksheet, "rowBreaks")[0];
|
|
54
|
+
const colBreaksEl = childrenWithTag(worksheet, "colBreaks")[0];
|
|
55
|
+
const rows = rowBreaksEl === void 0 ? [] : readBreakIndices(rowBreaksEl);
|
|
56
|
+
const columns = colBreaksEl === void 0 ? [] : readBreakIndices(colBreaksEl);
|
|
57
|
+
return rows.length > 0 || columns.length > 0 ? {
|
|
58
|
+
rows,
|
|
59
|
+
columns
|
|
60
|
+
} : void 0;
|
|
61
|
+
}
|
|
62
|
+
function readBreakIndices(container) {
|
|
63
|
+
const indices = [];
|
|
64
|
+
for (const brk of childrenWithTag(container, "brk")) {
|
|
65
|
+
const id = attr(brk, "id");
|
|
66
|
+
const index = id === void 0 ? void 0 : Number.parseInt(id, 10);
|
|
67
|
+
if (index !== void 0 && Number.isInteger(index) && index >= 0) indices.push(index);
|
|
68
|
+
}
|
|
69
|
+
return indices;
|
|
70
|
+
}
|
|
71
|
+
function readPrintSettings(worksheet, sheetIndex, definedNamesBySheet) {
|
|
72
|
+
const sheetPr = childrenWithTag(worksheet, "sheetPr")[0];
|
|
73
|
+
const pageSetUpPr = sheetPr === void 0 ? void 0 : childrenWithTag(sheetPr, "pageSetUpPr")[0];
|
|
74
|
+
const fitToPage = readXmlBool(pageSetUpPr === void 0 ? void 0 : attr(pageSetUpPr, "fitToPage"));
|
|
75
|
+
const pageSetup = childrenWithTag(worksheet, "pageSetup")[0];
|
|
76
|
+
const pageMargins = childrenWithTag(worksheet, "pageMargins")[0];
|
|
77
|
+
const printOptions = childrenWithTag(worksheet, "printOptions")[0];
|
|
78
|
+
const manualBreaks = readManualBreaks(worksheet);
|
|
79
|
+
const definedNames = definedNamesBySheet.get(sheetIndex);
|
|
80
|
+
const settings = {
|
|
81
|
+
pageSize: readPageSize(pageSetup),
|
|
82
|
+
margins: readMargins(pageMargins),
|
|
83
|
+
gridlines: readXmlBool(printOptions === void 0 ? void 0 : attr(printOptions, "gridLines")),
|
|
84
|
+
headers: readXmlBool(printOptions === void 0 ? void 0 : attr(printOptions, "headings")),
|
|
85
|
+
pageOrder: readPageOrder(pageSetup)
|
|
86
|
+
};
|
|
87
|
+
if (fitToPage) {
|
|
88
|
+
const fitToWidthRaw = pageSetup === void 0 ? void 0 : attr(pageSetup, "fitToWidth");
|
|
89
|
+
const fitToHeightRaw = pageSetup === void 0 ? void 0 : attr(pageSetup, "fitToHeight");
|
|
90
|
+
settings.fitToPages = {
|
|
91
|
+
width: fitToWidthRaw === void 0 ? DEFAULT_FIT_TO_PAGES : Number(fitToWidthRaw),
|
|
92
|
+
height: fitToHeightRaw === void 0 ? DEFAULT_FIT_TO_PAGES : Number(fitToHeightRaw)
|
|
93
|
+
};
|
|
94
|
+
} else {
|
|
95
|
+
const scaleRaw = pageSetup === void 0 ? void 0 : attr(pageSetup, "scale");
|
|
96
|
+
if (scaleRaw !== void 0) {
|
|
97
|
+
const scale = Number(scaleRaw);
|
|
98
|
+
if (Number.isFinite(scale)) settings.scale = scale;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (manualBreaks !== void 0) settings.manualBreaks = manualBreaks;
|
|
102
|
+
if (definedNames?.printArea !== void 0) {
|
|
103
|
+
const range = parsePrintAreaValue(definedNames.printArea);
|
|
104
|
+
if (range !== void 0) settings.printRange = range;
|
|
105
|
+
}
|
|
106
|
+
if (definedNames?.printTitles !== void 0) {
|
|
107
|
+
const titles = parsePrintTitlesValue(definedNames.printTitles);
|
|
108
|
+
if (titles.repeatRows !== void 0) settings.repeatRows = titles.repeatRows;
|
|
109
|
+
if (titles.repeatColumns !== void 0) settings.repeatColumns = titles.repeatColumns;
|
|
110
|
+
}
|
|
111
|
+
return settings;
|
|
112
|
+
}
|
|
113
|
+
//#endregion
|
|
114
|
+
export { DEFAULT_HEADER_FOOTER_MARGIN_PT, readPrintSettings };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_typed_util = require("../util.cjs");
|
|
3
|
+
//#region src/typed/xlsx/shared-strings.ts
|
|
4
|
+
function loadSharedStrings(pkg) {
|
|
5
|
+
const root = require_typed_util.rootElement(pkg.parts["xl/sharedStrings.xml"]);
|
|
6
|
+
if (root === void 0) return [];
|
|
7
|
+
const strings = [];
|
|
8
|
+
for (const si of require_typed_util.childrenWithTag(root, "si")) {
|
|
9
|
+
let value = "";
|
|
10
|
+
for (const t of require_typed_util.elementsWithTag(si.children, "t")) value += require_typed_util.textContent(t);
|
|
11
|
+
strings.push(value);
|
|
12
|
+
}
|
|
13
|
+
return strings;
|
|
14
|
+
}
|
|
15
|
+
var SharedStringTable = class {
|
|
16
|
+
indexByValue = /* @__PURE__ */ new Map();
|
|
17
|
+
values = [];
|
|
18
|
+
intern(value) {
|
|
19
|
+
const existing = this.indexByValue.get(value);
|
|
20
|
+
if (existing !== void 0) return existing;
|
|
21
|
+
const index = this.values.length;
|
|
22
|
+
this.indexByValue.set(value, index);
|
|
23
|
+
this.values.push(value);
|
|
24
|
+
return index;
|
|
25
|
+
}
|
|
26
|
+
entries() {
|
|
27
|
+
return this.values;
|
|
28
|
+
}
|
|
29
|
+
get size() {
|
|
30
|
+
return this.values.length;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
//#endregion
|
|
34
|
+
exports.SharedStringTable = SharedStringTable;
|
|
35
|
+
exports.loadSharedStrings = loadSharedStrings;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { r as Package } from "../../package-L24lkba-.cjs";
|
|
2
|
+
//#region src/typed/xlsx/shared-strings.d.ts
|
|
3
|
+
declare function loadSharedStrings(pkg: Package): string[];
|
|
4
|
+
declare class SharedStringTable {
|
|
5
|
+
private readonly indexByValue;
|
|
6
|
+
private readonly values;
|
|
7
|
+
intern(value: string): number;
|
|
8
|
+
entries(): readonly string[];
|
|
9
|
+
get size(): number;
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { SharedStringTable, loadSharedStrings };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { r as Package } from "../../package-BUojjTXf.js";
|
|
2
|
+
//#region src/typed/xlsx/shared-strings.d.ts
|
|
3
|
+
declare function loadSharedStrings(pkg: Package): string[];
|
|
4
|
+
declare class SharedStringTable {
|
|
5
|
+
private readonly indexByValue;
|
|
6
|
+
private readonly values;
|
|
7
|
+
intern(value: string): number;
|
|
8
|
+
entries(): readonly string[];
|
|
9
|
+
get size(): number;
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { SharedStringTable, loadSharedStrings };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { childrenWithTag, elementsWithTag, rootElement, textContent } from "../util.js";
|
|
2
|
+
//#region src/typed/xlsx/shared-strings.ts
|
|
3
|
+
function loadSharedStrings(pkg) {
|
|
4
|
+
const root = rootElement(pkg.parts["xl/sharedStrings.xml"]);
|
|
5
|
+
if (root === void 0) return [];
|
|
6
|
+
const strings = [];
|
|
7
|
+
for (const si of childrenWithTag(root, "si")) {
|
|
8
|
+
let value = "";
|
|
9
|
+
for (const t of elementsWithTag(si.children, "t")) value += textContent(t);
|
|
10
|
+
strings.push(value);
|
|
11
|
+
}
|
|
12
|
+
return strings;
|
|
13
|
+
}
|
|
14
|
+
var SharedStringTable = class {
|
|
15
|
+
indexByValue = /* @__PURE__ */ new Map();
|
|
16
|
+
values = [];
|
|
17
|
+
intern(value) {
|
|
18
|
+
const existing = this.indexByValue.get(value);
|
|
19
|
+
if (existing !== void 0) return existing;
|
|
20
|
+
const index = this.values.length;
|
|
21
|
+
this.indexByValue.set(value, index);
|
|
22
|
+
this.values.push(value);
|
|
23
|
+
return index;
|
|
24
|
+
}
|
|
25
|
+
entries() {
|
|
26
|
+
return this.values;
|
|
27
|
+
}
|
|
28
|
+
get size() {
|
|
29
|
+
return this.values.length;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
export { SharedStringTable, loadSharedStrings };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../shared/units.cjs");
|
|
3
|
+
//#region src/typed/xlsx/units.ts
|
|
4
|
+
const PIXELS_PER_INCH = 96;
|
|
5
|
+
const MAX_DIGIT_WIDTH_PX = 7;
|
|
6
|
+
const DEFAULT_ROW_HEIGHT_PT = 15;
|
|
7
|
+
function columnWidthCharsToPt(width) {
|
|
8
|
+
const digitWidthAllowance = Math.trunc(128 / 7);
|
|
9
|
+
return Math.trunc((256 * width + digitWidthAllowance) / 256 * 7) / 96 * 72;
|
|
10
|
+
}
|
|
11
|
+
function ptToColumnWidthChars(widthPt) {
|
|
12
|
+
const pixels = widthPt / 72 * 96;
|
|
13
|
+
const digitWidthAllowance = Math.trunc(128 / 7);
|
|
14
|
+
return pixels / 7 - digitWidthAllowance / 256;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
exports.DEFAULT_ROW_HEIGHT_PT = DEFAULT_ROW_HEIGHT_PT;
|
|
18
|
+
exports.MAX_DIGIT_WIDTH_PX = MAX_DIGIT_WIDTH_PX;
|
|
19
|
+
exports.PIXELS_PER_INCH = PIXELS_PER_INCH;
|
|
20
|
+
exports.columnWidthCharsToPt = columnWidthCharsToPt;
|
|
21
|
+
exports.ptToColumnWidthChars = ptToColumnWidthChars;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/typed/xlsx/units.d.ts
|
|
2
|
+
declare const PIXELS_PER_INCH = 96;
|
|
3
|
+
declare const MAX_DIGIT_WIDTH_PX = 7;
|
|
4
|
+
declare const DEFAULT_ROW_HEIGHT_PT = 15;
|
|
5
|
+
declare function columnWidthCharsToPt(width: number): number;
|
|
6
|
+
declare function ptToColumnWidthChars(widthPt: number): number;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { DEFAULT_ROW_HEIGHT_PT, MAX_DIGIT_WIDTH_PX, PIXELS_PER_INCH, columnWidthCharsToPt, ptToColumnWidthChars };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/typed/xlsx/units.d.ts
|
|
2
|
+
declare const PIXELS_PER_INCH = 96;
|
|
3
|
+
declare const MAX_DIGIT_WIDTH_PX = 7;
|
|
4
|
+
declare const DEFAULT_ROW_HEIGHT_PT = 15;
|
|
5
|
+
declare function columnWidthCharsToPt(width: number): number;
|
|
6
|
+
declare function ptToColumnWidthChars(widthPt: number): number;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { DEFAULT_ROW_HEIGHT_PT, MAX_DIGIT_WIDTH_PX, PIXELS_PER_INCH, columnWidthCharsToPt, ptToColumnWidthChars };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import "../shared/units.js";
|
|
2
|
+
//#region src/typed/xlsx/units.ts
|
|
3
|
+
const PIXELS_PER_INCH = 96;
|
|
4
|
+
const MAX_DIGIT_WIDTH_PX = 7;
|
|
5
|
+
const DEFAULT_ROW_HEIGHT_PT = 15;
|
|
6
|
+
function columnWidthCharsToPt(width) {
|
|
7
|
+
const digitWidthAllowance = Math.trunc(128 / 7);
|
|
8
|
+
return Math.trunc((256 * width + digitWidthAllowance) / 256 * 7) / 96 * 72;
|
|
9
|
+
}
|
|
10
|
+
function ptToColumnWidthChars(widthPt) {
|
|
11
|
+
const pixels = widthPt / 72 * 96;
|
|
12
|
+
const digitWidthAllowance = Math.trunc(128 / 7);
|
|
13
|
+
return pixels / 7 - digitWidthAllowance / 256;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { DEFAULT_ROW_HEIGHT_PT, MAX_DIGIT_WIDTH_PX, PIXELS_PER_INCH, columnWidthCharsToPt, ptToColumnWidthChars };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
require("../shared/units.cjs");
|
|
3
|
+
let document_schema_js = require("document-schema.js");
|
|
4
|
+
//#region src/typed/xlsx/util.ts
|
|
5
|
+
function readXmlBool(value) {
|
|
6
|
+
return value === "1" || value === "true";
|
|
7
|
+
}
|
|
8
|
+
function writeXmlBool(value) {
|
|
9
|
+
return value ? "true" : "false";
|
|
10
|
+
}
|
|
11
|
+
const UNIVERSAL_MEASURE_RE = /^(-?\d+(?:\.\d+)?)(mm|cm|in|pt|pc|pi)$/;
|
|
12
|
+
function parseUniversalMeasureToPt(value) {
|
|
13
|
+
const match = UNIVERSAL_MEASURE_RE.exec(value.trim());
|
|
14
|
+
if (match === null) return;
|
|
15
|
+
const amountRaw = match[1];
|
|
16
|
+
const unit = match[2];
|
|
17
|
+
if (amountRaw === void 0 || unit === void 0) return;
|
|
18
|
+
const amount = Number(amountRaw);
|
|
19
|
+
switch (unit) {
|
|
20
|
+
case "mm": return amount / 25.4 * 72;
|
|
21
|
+
case "cm": return amount / 2.54 * 72;
|
|
22
|
+
case "in": return amount * 72;
|
|
23
|
+
case "pt": return amount;
|
|
24
|
+
case "pc":
|
|
25
|
+
case "pi": return amount * 12;
|
|
26
|
+
default: return;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function ptToUniversalMeasure(pt) {
|
|
30
|
+
return `${(pt / 72 * 2.54).toFixed(2)}cm`;
|
|
31
|
+
}
|
|
32
|
+
const PAPER_SIZE_BY_CODE = {
|
|
33
|
+
"1": document_schema_js.PAGE_SIZE_LETTER,
|
|
34
|
+
"9": document_schema_js.PAGE_SIZE_A4
|
|
35
|
+
};
|
|
36
|
+
function paperSizeCodeToPageSize(code) {
|
|
37
|
+
return PAPER_SIZE_BY_CODE[code];
|
|
38
|
+
}
|
|
39
|
+
const PAPER_SIZE_TOLERANCE_PT = .5;
|
|
40
|
+
function approximatelyEquals(a, b) {
|
|
41
|
+
return Math.abs(a - b) <= PAPER_SIZE_TOLERANCE_PT;
|
|
42
|
+
}
|
|
43
|
+
function pageSizeToPaperSizeCode(pageSize) {
|
|
44
|
+
if (approximatelyEquals(pageSize.widthPt, document_schema_js.PAGE_SIZE_LETTER.widthPt) && approximatelyEquals(pageSize.heightPt, document_schema_js.PAGE_SIZE_LETTER.heightPt)) return "1";
|
|
45
|
+
if (approximatelyEquals(pageSize.widthPt, document_schema_js.PAGE_SIZE_A4.widthPt) && approximatelyEquals(pageSize.heightPt, document_schema_js.PAGE_SIZE_A4.heightPt)) return "9";
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
exports.pageSizeToPaperSizeCode = pageSizeToPaperSizeCode;
|
|
49
|
+
exports.paperSizeCodeToPageSize = paperSizeCodeToPageSize;
|
|
50
|
+
exports.parseUniversalMeasureToPt = parseUniversalMeasureToPt;
|
|
51
|
+
exports.ptToUniversalMeasure = ptToUniversalMeasure;
|
|
52
|
+
exports.readXmlBool = readXmlBool;
|
|
53
|
+
exports.writeXmlBool = writeXmlBool;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PageSize } from "document-schema.js";
|
|
2
|
+
//#region src/typed/xlsx/util.d.ts
|
|
3
|
+
declare function readXmlBool(value: string | undefined): boolean;
|
|
4
|
+
declare function writeXmlBool(value: boolean): string;
|
|
5
|
+
declare function parseUniversalMeasureToPt(value: string): number | undefined;
|
|
6
|
+
declare function ptToUniversalMeasure(pt: number): string;
|
|
7
|
+
declare function paperSizeCodeToPageSize(code: string): PageSize | undefined;
|
|
8
|
+
declare function pageSizeToPaperSizeCode(pageSize: PageSize): string | undefined;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { pageSizeToPaperSizeCode, paperSizeCodeToPageSize, parseUniversalMeasureToPt, ptToUniversalMeasure, readXmlBool, writeXmlBool };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PageSize } from "document-schema.js";
|
|
2
|
+
//#region src/typed/xlsx/util.d.ts
|
|
3
|
+
declare function readXmlBool(value: string | undefined): boolean;
|
|
4
|
+
declare function writeXmlBool(value: boolean): string;
|
|
5
|
+
declare function parseUniversalMeasureToPt(value: string): number | undefined;
|
|
6
|
+
declare function ptToUniversalMeasure(pt: number): string;
|
|
7
|
+
declare function paperSizeCodeToPageSize(code: string): PageSize | undefined;
|
|
8
|
+
declare function pageSizeToPaperSizeCode(pageSize: PageSize): string | undefined;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { pageSizeToPaperSizeCode, paperSizeCodeToPageSize, parseUniversalMeasureToPt, ptToUniversalMeasure, readXmlBool, writeXmlBool };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import "../shared/units.js";
|
|
2
|
+
import { PAGE_SIZE_A4, PAGE_SIZE_LETTER } from "document-schema.js";
|
|
3
|
+
//#region src/typed/xlsx/util.ts
|
|
4
|
+
function readXmlBool(value) {
|
|
5
|
+
return value === "1" || value === "true";
|
|
6
|
+
}
|
|
7
|
+
function writeXmlBool(value) {
|
|
8
|
+
return value ? "true" : "false";
|
|
9
|
+
}
|
|
10
|
+
const UNIVERSAL_MEASURE_RE = /^(-?\d+(?:\.\d+)?)(mm|cm|in|pt|pc|pi)$/;
|
|
11
|
+
function parseUniversalMeasureToPt(value) {
|
|
12
|
+
const match = UNIVERSAL_MEASURE_RE.exec(value.trim());
|
|
13
|
+
if (match === null) return;
|
|
14
|
+
const amountRaw = match[1];
|
|
15
|
+
const unit = match[2];
|
|
16
|
+
if (amountRaw === void 0 || unit === void 0) return;
|
|
17
|
+
const amount = Number(amountRaw);
|
|
18
|
+
switch (unit) {
|
|
19
|
+
case "mm": return amount / 25.4 * 72;
|
|
20
|
+
case "cm": return amount / 2.54 * 72;
|
|
21
|
+
case "in": return amount * 72;
|
|
22
|
+
case "pt": return amount;
|
|
23
|
+
case "pc":
|
|
24
|
+
case "pi": return amount * 12;
|
|
25
|
+
default: return;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function ptToUniversalMeasure(pt) {
|
|
29
|
+
return `${(pt / 72 * 2.54).toFixed(2)}cm`;
|
|
30
|
+
}
|
|
31
|
+
const PAPER_SIZE_BY_CODE = {
|
|
32
|
+
"1": PAGE_SIZE_LETTER,
|
|
33
|
+
"9": PAGE_SIZE_A4
|
|
34
|
+
};
|
|
35
|
+
function paperSizeCodeToPageSize(code) {
|
|
36
|
+
return PAPER_SIZE_BY_CODE[code];
|
|
37
|
+
}
|
|
38
|
+
const PAPER_SIZE_TOLERANCE_PT = .5;
|
|
39
|
+
function approximatelyEquals(a, b) {
|
|
40
|
+
return Math.abs(a - b) <= PAPER_SIZE_TOLERANCE_PT;
|
|
41
|
+
}
|
|
42
|
+
function pageSizeToPaperSizeCode(pageSize) {
|
|
43
|
+
if (approximatelyEquals(pageSize.widthPt, PAGE_SIZE_LETTER.widthPt) && approximatelyEquals(pageSize.heightPt, PAGE_SIZE_LETTER.heightPt)) return "1";
|
|
44
|
+
if (approximatelyEquals(pageSize.widthPt, PAGE_SIZE_A4.widthPt) && approximatelyEquals(pageSize.heightPt, PAGE_SIZE_A4.heightPt)) return "9";
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { pageSizeToPaperSizeCode, paperSizeCodeToPageSize, parseUniversalMeasureToPt, ptToUniversalMeasure, readXmlBool, writeXmlBool };
|