reamkit 0.1.0-alpha.0 → 1.0.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 +106 -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.js +1 -1
- 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 +16 -0
- package/dist/esm/core/converter/ream.d.ts +35 -0
- package/dist/esm/core/converter/ream.js +100 -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 +1 -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/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.js +1 -1
- 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.js +1 -1
- 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/{style-cascade → core/style-cascade}/index.d.ts +2 -2
- package/dist/esm/core/style-cascade/index.js +2 -0
- package/dist/esm/{style-cascade → core/style-cascade}/resolver.d.ts +1 -0
- package/dist/esm/{style-cascade → core/style-cascade}/resolver.js +14 -9
- package/dist/esm/{style-cascade → core/style-cascade}/types.d.ts +8 -7
- package/dist/esm/{style-cascade → core/style-cascade}/types.js +9 -8
- 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 -11
- package/dist/esm/pdf/chart-geometry.d.ts +1 -1
- package/dist/esm/pdf/cid-font.d.ts +7 -1
- package/dist/esm/pdf/cid-font.js +33 -22
- package/dist/esm/pdf/image-xobject.d.ts +13 -0
- package/dist/esm/pdf/image-xobject.js +55 -54
- package/dist/esm/pdf/index.d.ts +2 -2
- package/dist/esm/pdf/math-layout.d.ts +1 -1
- package/dist/esm/pdf/preset-geometry.d.ts +1 -1
- package/dist/esm/pdf/signature.js +4 -4
- package/dist/esm/pdf/styled-page-emitter.d.ts +5 -0
- package/dist/esm/pdf/styled-page-emitter.js +542 -0
- package/dist/esm/pdf/styled-page-renderer.d.ts +189 -14
- package/dist/esm/pdf/styled-page-renderer.js +168 -654
- package/dist/esm/pdf/text-page-renderer.d.ts +1 -1
- package/dist/esm/svg/svg-writer.d.ts +8 -0
- package/dist/esm/svg/svg-writer.js +138 -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 +190 -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/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/{bidi → core/bidi}/algorithm.d.ts +0 -0
- /package/dist/esm/{bidi → core/bidi}/char-types.d.ts +0 -0
- /package/dist/esm/{bidi → core/bidi}/index.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/{line-breaker → core/line-breaker}/knuth-plass.d.ts +0 -0
- /package/dist/esm/{numbering → core/numbering}/index.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}/package.d.ts +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/{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,5 +1,10 @@
|
|
|
1
1
|
import { DEFAULT_RESOLVED_PARAGRAPH, DEFAULT_RESOLVED_RUN } from "./types.js";
|
|
2
|
-
//#region src/style-cascade/resolver.ts
|
|
2
|
+
//#region src/core/style-cascade/resolver.ts
|
|
3
|
+
var EMPTY_STYLE_SHEET = {
|
|
4
|
+
defaultRunProperties: {},
|
|
5
|
+
defaultParagraphProperties: {},
|
|
6
|
+
styles: /* @__PURE__ */ new Map()
|
|
7
|
+
};
|
|
3
8
|
function resolveRunProperties(runDirect, paragraphDirect, sheet) {
|
|
4
9
|
let acc = mergeRun(DEFAULT_RESOLVED_RUN, sheet.defaultRunProperties);
|
|
5
10
|
if (paragraphDirect.styleId) {
|
|
@@ -52,7 +57,7 @@ function mergeRun(base, override) {
|
|
|
52
57
|
italic: override.italic ?? base.italic,
|
|
53
58
|
underline: override.underline ?? base.underline,
|
|
54
59
|
strike: override.strike ?? base.strike,
|
|
55
|
-
|
|
60
|
+
fontSizePt: override.fontSizePt ?? base.fontSizePt,
|
|
56
61
|
colorHex: override.colorHex ?? base.colorHex,
|
|
57
62
|
fontFamily: override.fontFamily ?? base.fontFamily,
|
|
58
63
|
verticalAlign: override.verticalAlign ?? base.verticalAlign,
|
|
@@ -65,13 +70,13 @@ function mergePar(base, override) {
|
|
|
65
70
|
const styleId = override.styleId ?? base.styleId;
|
|
66
71
|
return {
|
|
67
72
|
alignment: override.alignment ?? base.alignment,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
spacingBefore: override.spacingBefore ?? base.spacingBefore,
|
|
74
|
+
spacingAfter: override.spacingAfter ?? base.spacingAfter,
|
|
75
|
+
spacingLine: override.spacingLine ?? base.spacingLine,
|
|
71
76
|
spacingLineRule: override.spacingLineRule ?? base.spacingLineRule,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
indentLeft: override.indentLeft ?? base.indentLeft,
|
|
78
|
+
indentRight: override.indentRight ?? base.indentRight,
|
|
79
|
+
indentFirstLine: override.indentFirstLine ?? base.indentFirstLine,
|
|
75
80
|
pageBreakBefore: override.pageBreakBefore ?? base.pageBreakBefore,
|
|
76
81
|
bidi: override.bidi ?? base.bidi,
|
|
77
82
|
...outlineLevel !== void 0 ? { outlineLevel } : {},
|
|
@@ -93,4 +98,4 @@ function copyDefined(base, override) {
|
|
|
93
98
|
return out;
|
|
94
99
|
}
|
|
95
100
|
//#endregion
|
|
96
|
-
export { resolveParagraphProperties, resolveRunProperties };
|
|
101
|
+
export { EMPTY_STYLE_SHEET, resolveParagraphProperties, resolveRunProperties };
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Alignment, FontFamilyMap, UnderlineStyle, VerticalAlign } from '../document-model/index.js';
|
|
2
|
+
import { Pt } from '../ir/index.js';
|
|
2
3
|
export interface ResolvedRunProperties {
|
|
3
4
|
readonly bold: boolean;
|
|
4
5
|
readonly italic: boolean;
|
|
5
6
|
readonly underline: UnderlineStyle;
|
|
6
7
|
readonly strike: boolean;
|
|
7
|
-
readonly
|
|
8
|
+
readonly fontSizePt: Pt;
|
|
8
9
|
readonly colorHex: string;
|
|
9
10
|
readonly fontFamily: FontFamilyMap;
|
|
10
11
|
readonly verticalAlign: VerticalAlign;
|
|
@@ -13,13 +14,13 @@ export interface ResolvedRunProperties {
|
|
|
13
14
|
}
|
|
14
15
|
export interface ResolvedParagraphProperties {
|
|
15
16
|
readonly alignment: Alignment;
|
|
16
|
-
readonly
|
|
17
|
-
readonly
|
|
18
|
-
readonly
|
|
17
|
+
readonly spacingBefore: Pt;
|
|
18
|
+
readonly spacingAfter: Pt;
|
|
19
|
+
readonly spacingLine: Pt;
|
|
19
20
|
readonly spacingLineRule: 'auto' | 'exact' | 'atLeast';
|
|
20
|
-
readonly
|
|
21
|
-
readonly
|
|
22
|
-
readonly
|
|
21
|
+
readonly indentLeft: Pt;
|
|
22
|
+
readonly indentRight: Pt;
|
|
23
|
+
readonly indentFirstLine: Pt;
|
|
23
24
|
readonly pageBreakBefore: boolean;
|
|
24
25
|
readonly bidi: boolean;
|
|
25
26
|
readonly outlineLevel?: number;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import { halfPtToPt, twipsToPt } from "../ir/units.js";
|
|
2
|
+
//#region src/core/style-cascade/types.ts
|
|
2
3
|
var DEFAULT_RESOLVED_RUN = {
|
|
3
4
|
bold: false,
|
|
4
5
|
italic: false,
|
|
5
6
|
underline: "none",
|
|
6
7
|
strike: false,
|
|
7
|
-
|
|
8
|
+
fontSizePt: halfPtToPt(22),
|
|
8
9
|
colorHex: "000000",
|
|
9
10
|
fontFamily: {},
|
|
10
11
|
verticalAlign: "baseline",
|
|
@@ -12,13 +13,13 @@ var DEFAULT_RESOLVED_RUN = {
|
|
|
12
13
|
};
|
|
13
14
|
var DEFAULT_RESOLVED_PARAGRAPH = {
|
|
14
15
|
alignment: "left",
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
spacingBefore: twipsToPt(0),
|
|
17
|
+
spacingAfter: twipsToPt(0),
|
|
18
|
+
spacingLine: twipsToPt(240),
|
|
18
19
|
spacingLineRule: "auto",
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
indentLeft: twipsToPt(0),
|
|
21
|
+
indentRight: twipsToPt(0),
|
|
22
|
+
indentFirstLine: twipsToPt(0),
|
|
22
23
|
pageBreakBefore: false,
|
|
23
24
|
bidi: false
|
|
24
25
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { parseCellRef } from "./cell-reference.js";
|
|
2
|
-
//#region src/
|
|
2
|
+
//#region src/excel/defined-name-ref.ts
|
|
3
3
|
function stripQualifier(token) {
|
|
4
4
|
const bang = token.lastIndexOf("!");
|
|
5
5
|
return (bang >= 0 ? token.substring(bang + 1) : token).replace(/\$/g, "").trim();
|
|
@@ -4,7 +4,7 @@ export { parseAreaRef, parseTitleRowRange } from './defined-name-ref.js';
|
|
|
4
4
|
export type { CellRange } from './defined-name-ref.js';
|
|
5
5
|
export { parseSharedStrings } from './shared-strings-parser.js';
|
|
6
6
|
export { parseWorkbook } from './workbook-parser.js';
|
|
7
|
-
export type { DefinedName, ParsedWorkbook, SheetReference
|
|
7
|
+
export type { DefinedName, ParsedWorkbook, SheetReference } from './workbook-parser.js';
|
|
8
8
|
export { parseWorksheet } from './worksheet-parser.js';
|
|
9
9
|
export type { CellType, ColumnWidth, MergedRange, ParsedWorksheet, RowHeight, WorksheetCell, XlsxPageMargins, XlsxPageSetup, XlsxPrintOptions, } from './worksheet-parser.js';
|
|
10
10
|
export { parseXlsxStyles, EMPTY_XLSX_STYLES } from './styles-parser.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BodyElement, SectionProperties } from '../core/document-model/index.js';
|
|
2
|
+
import { CellRange, DefinedName, ParsedWorksheet, XlsxStyles } from './index.js';
|
|
3
|
+
export declare function sectionFromWorksheet(worksheet: ParsedWorksheet): SectionProperties | undefined;
|
|
4
|
+
export declare function resolvePrintArea(definedNames: ReadonlyArray<DefinedName>, sheetIdx: number): CellRange | undefined;
|
|
5
|
+
export declare function resolvePrintTitleRows(definedNames: ReadonlyArray<DefinedName>, sheetIdx: number): {
|
|
6
|
+
readonly startRow: number;
|
|
7
|
+
readonly endRow: number;
|
|
8
|
+
} | undefined;
|
|
9
|
+
interface PrintModelOptions {
|
|
10
|
+
readonly printArea?: CellRange;
|
|
11
|
+
readonly gridLines: boolean;
|
|
12
|
+
readonly titleRows?: {
|
|
13
|
+
readonly startRow: number;
|
|
14
|
+
readonly endRow: number;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export declare function worksheetToBody(worksheet: ParsedWorksheet, sharedStrings: Array<string>, styles: XlsxStyles, date1904: boolean, print: PrintModelOptions): Array<BodyElement>;
|
|
18
|
+
export {};
|
|
@@ -1,25 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import { EMPTY_STYLE_SHEET } from "../ooxml/wordproc/styles-parser.js";
|
|
7
|
-
import "../ooxml/wordproc/index.js";
|
|
8
|
-
import { signPdf } from "../pdf/signature.js";
|
|
9
|
-
import { renderStyledPdf } from "../pdf/styled-page-renderer.js";
|
|
10
|
-
import "../pdf/index.js";
|
|
11
|
-
import { parseAreaRef, parseTitleRowRange } from "../ooxml/spreadsheet/defined-name-ref.js";
|
|
12
|
-
import { parseSharedStrings } from "../ooxml/spreadsheet/shared-strings-parser.js";
|
|
13
|
-
import { parseWorkbook } from "../ooxml/spreadsheet/workbook-parser.js";
|
|
14
|
-
import { parseWorksheet } from "../ooxml/spreadsheet/worksheet-parser.js";
|
|
15
|
-
import { EMPTY_XLSX_STYLES, parseXlsxStyles } from "../ooxml/spreadsheet/styles-parser.js";
|
|
16
|
-
import { applyNumberFormat } from "../ooxml/spreadsheet/number-format.js";
|
|
17
|
-
import "../ooxml/spreadsheet/index.js";
|
|
18
|
-
//#region src/converter/xlsx-to-pdf.ts
|
|
19
|
-
var WORKBOOK_PART = "xl/workbook.xml";
|
|
20
|
-
var SHARED_STRINGS_PART = "xl/sharedStrings.xml";
|
|
21
|
-
var STYLES_PART = "xl/styles.xml";
|
|
22
|
-
var CORE_PROPS_PART = "docProps/core.xml";
|
|
1
|
+
import { eighthPtToPt, halfPtToPt, twipsToPt } from "../core/ir/units.js";
|
|
2
|
+
import { parseAreaRef, parseTitleRowRange } from "./defined-name-ref.js";
|
|
3
|
+
import { applyNumberFormat } from "./number-format.js";
|
|
4
|
+
import "./index.js";
|
|
5
|
+
//#region src/excel/print-model.ts
|
|
23
6
|
var TWIPS_PER_EXCEL_CHAR = 105;
|
|
24
7
|
var DEFAULT_COL_TWIPS = 960;
|
|
25
8
|
var DEFAULT_ROW_TWIPS = 300;
|
|
@@ -35,100 +18,6 @@ var PAPER_SIZES_TWIPS = new Map([
|
|
|
35
18
|
[70, [5953, 8392]]
|
|
36
19
|
]);
|
|
37
20
|
var DEFAULT_PAPER_TWIPS = [11906, 16838];
|
|
38
|
-
async function convertXlsxToPdf(xlsx, options = {}) {
|
|
39
|
-
const { signature } = options;
|
|
40
|
-
const renderOptions = signature ? {
|
|
41
|
-
...options,
|
|
42
|
-
signaturePlaceholder: signature
|
|
43
|
-
} : options;
|
|
44
|
-
let pdf;
|
|
45
|
-
if (renderOptions.fonts ?? renderOptions.fontBytes) pdf = convertXlsxToPdfSync(xlsx, renderOptions);
|
|
46
|
-
else {
|
|
47
|
-
const fonts = await fetchFontSet({
|
|
48
|
-
...options.fontFamily ? { family: options.fontFamily } : {},
|
|
49
|
-
...options.fontFetch ? { fetch: options.fontFetch } : {}
|
|
50
|
-
});
|
|
51
|
-
pdf = convertXlsxToPdfSync(xlsx, {
|
|
52
|
-
...renderOptions,
|
|
53
|
-
fonts
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
return signature ? signPdf(pdf, signature) : pdf;
|
|
57
|
-
}
|
|
58
|
-
function convertXlsxToPdfSync(xlsx, options) {
|
|
59
|
-
const fonts = options.fonts ?? (options.fontBytes ? { regular: options.fontBytes } : void 0);
|
|
60
|
-
if (!fonts) throw new Error("convertXlsxToPdfSync requires options.fonts or options.fontBytes");
|
|
61
|
-
const registry = FontRegistry.fromBytes(fonts);
|
|
62
|
-
const pkg = OpcPackage.open(xlsx);
|
|
63
|
-
const workbookData = pkg.getPart(WORKBOOK_PART);
|
|
64
|
-
if (!workbookData) throw new Error("Not a valid xlsx: missing xl/workbook.xml");
|
|
65
|
-
const { sheets, date1904, definedNames } = parseWorkbook(workbookData);
|
|
66
|
-
if (sheets.length === 0) throw new Error("xlsx has no sheets");
|
|
67
|
-
const sharedStringsData = pkg.getPart(SHARED_STRINGS_PART);
|
|
68
|
-
const sharedStrings = sharedStringsData ? parseSharedStrings(sharedStringsData) : [];
|
|
69
|
-
const stylesData = pkg.getPart(STYLES_PART);
|
|
70
|
-
const styles = stylesData ? parseXlsxStyles(stylesData) : EMPTY_XLSX_STYLES;
|
|
71
|
-
const workbookRels = pkg.getPartRelationships(WORKBOOK_PART);
|
|
72
|
-
const body = [];
|
|
73
|
-
let firstSheetSection;
|
|
74
|
-
for (let sheetIdx = 0; sheetIdx < sheets.length; sheetIdx++) {
|
|
75
|
-
const sheet = sheets[sheetIdx];
|
|
76
|
-
const sheetRel = workbookRels.find((r) => r.id === sheet.relationshipId);
|
|
77
|
-
if (!sheetRel) continue;
|
|
78
|
-
const resolved = pkg.resolveRelatedPart(WORKBOOK_PART, sheetRel);
|
|
79
|
-
if (!resolved) continue;
|
|
80
|
-
const worksheet = parseWorksheet(resolved.data);
|
|
81
|
-
if (sheetIdx === 0) firstSheetSection = sectionFromWorksheet(worksheet);
|
|
82
|
-
if (sheetIdx > 0) body.push({
|
|
83
|
-
kind: "paragraph",
|
|
84
|
-
paragraph: {
|
|
85
|
-
properties: { pageBreakBefore: true },
|
|
86
|
-
runs: []
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
const printArea = resolvePrintArea(definedNames, sheetIdx);
|
|
90
|
-
const titleRows = resolvePrintTitleRows(definedNames, sheetIdx);
|
|
91
|
-
const gridLines = worksheet.printOptions?.gridLines === true;
|
|
92
|
-
body.push(...worksheetToBody(worksheet, sharedStrings, styles, date1904, {
|
|
93
|
-
...printArea ? { printArea } : {},
|
|
94
|
-
...titleRows ? { titleRows } : {},
|
|
95
|
-
gridLines
|
|
96
|
-
}));
|
|
97
|
-
}
|
|
98
|
-
const coreData = pkg.getPart(CORE_PROPS_PART);
|
|
99
|
-
const coreProps = coreData ? parseCoreProperties(coreData) : void 0;
|
|
100
|
-
const { fontBytes: _ignoreA, fonts: _ignoreB, section: sectionOverride, info: callerInfo, embedSource, attachments: callerAttachments, signature: _ignoreSig, ...renderOptions } = options;
|
|
101
|
-
const section = sectionOverride ?? firstSheetSection;
|
|
102
|
-
const info = mergeInfo(coreProps, callerInfo);
|
|
103
|
-
const attachments = [...callerAttachments ?? []];
|
|
104
|
-
if (embedSource && options.pdfA?.startsWith("PDF/A-3")) attachments.push({
|
|
105
|
-
name: "source.xlsx",
|
|
106
|
-
bytes: xlsx,
|
|
107
|
-
mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
108
|
-
relationship: "Source",
|
|
109
|
-
description: "Source Excel workbook"
|
|
110
|
-
});
|
|
111
|
-
return renderStyledPdf(body, {
|
|
112
|
-
registry,
|
|
113
|
-
styles: EMPTY_STYLE_SHEET,
|
|
114
|
-
...section ? { section } : {},
|
|
115
|
-
...info ? { info } : {},
|
|
116
|
-
...attachments.length > 0 ? { attachments } : {},
|
|
117
|
-
...renderOptions
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
function mergeInfo(core, caller) {
|
|
121
|
-
if (!core && !caller) return void 0;
|
|
122
|
-
return {
|
|
123
|
-
...core?.title ? { title: core.title } : {},
|
|
124
|
-
...core?.creator ? { author: core.creator } : {},
|
|
125
|
-
...core?.subject ? { subject: core.subject } : {},
|
|
126
|
-
...core?.keywords ? { keywords: core.keywords } : {},
|
|
127
|
-
...core?.created ? { creationDate: core.created } : {},
|
|
128
|
-
...core?.modified ? { modificationDate: core.modified } : {},
|
|
129
|
-
...caller
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
21
|
function sectionFromWorksheet(worksheet) {
|
|
133
22
|
const pageSize = pageSizeFromSetup(worksheet.pageSetup);
|
|
134
23
|
const margins = marginsFromXlsx(worksheet.pageMargins);
|
|
@@ -147,20 +36,20 @@ function pageSizeFromSetup(setup) {
|
|
|
147
36
|
const orientation = setup.orientation === "landscape" ? "landscape" : "portrait";
|
|
148
37
|
if (setup.paperSize === void 0 && setup.orientation !== "landscape") return void 0;
|
|
149
38
|
return {
|
|
150
|
-
|
|
151
|
-
|
|
39
|
+
width: twipsToPt(w),
|
|
40
|
+
height: twipsToPt(h),
|
|
152
41
|
orientation
|
|
153
42
|
};
|
|
154
43
|
}
|
|
155
44
|
function marginsFromXlsx(margins) {
|
|
156
45
|
if (!margins) return void 0;
|
|
157
46
|
return {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
...margins.headerInches !== void 0 ? {
|
|
163
|
-
...margins.footerInches !== void 0 ? {
|
|
47
|
+
top: twipsToPt(Math.round(margins.topInches * TWIPS_PER_INCH)),
|
|
48
|
+
right: twipsToPt(Math.round(margins.rightInches * TWIPS_PER_INCH)),
|
|
49
|
+
bottom: twipsToPt(Math.round(margins.bottomInches * TWIPS_PER_INCH)),
|
|
50
|
+
left: twipsToPt(Math.round(margins.leftInches * TWIPS_PER_INCH)),
|
|
51
|
+
...margins.headerInches !== void 0 ? { header: twipsToPt(Math.round(margins.headerInches * TWIPS_PER_INCH)) } : {},
|
|
52
|
+
...margins.footerInches !== void 0 ? { footer: twipsToPt(Math.round(margins.footerInches * TWIPS_PER_INCH)) } : {}
|
|
164
53
|
};
|
|
165
54
|
}
|
|
166
55
|
var PRINT_AREA_NAME = "_xlnm.Print_Area";
|
|
@@ -173,17 +62,19 @@ function resolvePrintTitleRows(definedNames, sheetIdx) {
|
|
|
173
62
|
}
|
|
174
63
|
var MIN_PRINT_SCALE = .1;
|
|
175
64
|
function sheetContentWidthTwips(worksheet) {
|
|
176
|
-
const
|
|
65
|
+
const pageSize = pageSizeFromSetup(worksheet.pageSetup);
|
|
66
|
+
const pageWidthTwips = pageSize ? Math.round(pageSize.width * 20) : DEFAULT_PAPER_TWIPS[0];
|
|
177
67
|
const margins = marginsFromXlsx(worksheet.pageMargins);
|
|
178
|
-
const left = margins
|
|
179
|
-
const right = margins
|
|
68
|
+
const left = margins ? Math.round(margins.left * 20) : TWIPS_PER_INCH;
|
|
69
|
+
const right = margins ? Math.round(margins.right * 20) : TWIPS_PER_INCH;
|
|
180
70
|
return Math.max(TWIPS_PER_INCH / 2, pageWidthTwips - left - right);
|
|
181
71
|
}
|
|
182
72
|
function sheetContentHeightTwips(worksheet) {
|
|
183
|
-
const
|
|
73
|
+
const pageSize = pageSizeFromSetup(worksheet.pageSetup);
|
|
74
|
+
const pageHeightTwips = pageSize ? Math.round(pageSize.height * 20) : DEFAULT_PAPER_TWIPS[1];
|
|
184
75
|
const margins = marginsFromXlsx(worksheet.pageMargins);
|
|
185
|
-
const top = margins
|
|
186
|
-
const bottom = margins
|
|
76
|
+
const top = margins ? Math.round(margins.top * 20) : TWIPS_PER_INCH;
|
|
77
|
+
const bottom = margins ? Math.round(margins.bottom * 20) : TWIPS_PER_INCH;
|
|
187
78
|
return Math.max(TWIPS_PER_INCH / 2, pageHeightTwips - top - bottom);
|
|
188
79
|
}
|
|
189
80
|
function computePrintScale(worksheet, totalGridTwips, contentWidthTwips, totalGridHeightTwips, contentHeightTwips) {
|
|
@@ -201,10 +92,10 @@ function computePrintScale(worksheet, totalGridTwips, contentWidthTwips, totalGr
|
|
|
201
92
|
return Math.min(1, Math.max(MIN_PRINT_SCALE, s));
|
|
202
93
|
}
|
|
203
94
|
function scaleRunFont(props, scale) {
|
|
204
|
-
const hp = props.
|
|
95
|
+
const hp = props.fontSizePt !== void 0 ? Math.round(props.fontSizePt * 2) : 22;
|
|
205
96
|
return {
|
|
206
97
|
...props,
|
|
207
|
-
|
|
98
|
+
fontSizePt: halfPtToPt(Math.max(2, Math.round(hp * scale)))
|
|
208
99
|
};
|
|
209
100
|
}
|
|
210
101
|
var MAX_SHEET_TEXT_CHARS = 1e6;
|
|
@@ -287,7 +178,7 @@ function worksheetToBody(worksheet, sharedStrings, styles, date1904, print) {
|
|
|
287
178
|
const merge = mergeOrigins.get(key(absR, absC));
|
|
288
179
|
if (insideMerge.has(key(absR, absC)) && !merge) {
|
|
289
180
|
const verticalParent = verticalMergeParent(worksheet.merges, absR, absC);
|
|
290
|
-
if (verticalParent && absC === verticalParent.startColumn) cells.push(makeVerticalContinuation(verticalParent, colWindowEnd));
|
|
181
|
+
if (verticalParent && absC === verticalParent.startColumn) cells.push(makeVerticalContinuation(verticalParent, colWindowEnd, absR, rowWindowEnd));
|
|
291
182
|
continue;
|
|
292
183
|
}
|
|
293
184
|
const ws = cellMatrix[r]?.[c];
|
|
@@ -314,8 +205,8 @@ function worksheetToBody(worksheet, sharedStrings, styles, date1904, print) {
|
|
|
314
205
|
}
|
|
315
206
|
const visibleEndCol = merge ? Math.min(merge.endColumn, colWindowEnd) : 0;
|
|
316
207
|
const properties = {
|
|
317
|
-
...merge && visibleEndCol > merge.startColumn ? {
|
|
318
|
-
...merge && Math.min(merge.endRow, rowWindowEnd) > merge.startRow ? {
|
|
208
|
+
...merge && visibleEndCol > merge.startColumn ? { colSpan: visibleEndCol - merge.startColumn + 1 } : {},
|
|
209
|
+
...merge && Math.min(merge.endRow, rowWindowEnd) > merge.startRow ? { merge: "start" } : {},
|
|
319
210
|
...shading ? { shading } : {},
|
|
320
211
|
...borders ? { borders } : {}
|
|
321
212
|
};
|
|
@@ -335,13 +226,13 @@ function worksheetToBody(worksheet, sharedStrings, styles, date1904, print) {
|
|
|
335
226
|
});
|
|
336
227
|
}
|
|
337
228
|
const baseRowProps = rowHeightMap.get(r);
|
|
338
|
-
const
|
|
339
|
-
...baseRowProps,
|
|
340
|
-
heightTwips: Math.max(1, Math.round(baseRowProps.heightTwips * printScale))
|
|
341
|
-
} : baseRowProps ?? {};
|
|
229
|
+
const rowHeightTwips = scaled && baseRowProps !== void 0 ? Math.max(1, Math.round(baseRowProps.heightTwips * printScale)) : baseRowProps?.heightTwips;
|
|
342
230
|
const isTitleRow = print.titleRows !== void 0 && absR >= print.titleRows.startRow && absR <= print.titleRows.endRow;
|
|
343
231
|
const rowProps = {
|
|
344
|
-
...
|
|
232
|
+
...rowHeightTwips !== void 0 ? {
|
|
233
|
+
height: twipsToPt(rowHeightTwips),
|
|
234
|
+
heightRule: "atLeast"
|
|
235
|
+
} : {},
|
|
345
236
|
...isTitleRow ? { isHeader: true } : {},
|
|
346
237
|
...breakRows.has(absR) ? { pageBreakBefore: true } : {}
|
|
347
238
|
};
|
|
@@ -352,7 +243,7 @@ function worksheetToBody(worksheet, sharedStrings, styles, date1904, print) {
|
|
|
352
243
|
}
|
|
353
244
|
const thin = {
|
|
354
245
|
style: "single",
|
|
355
|
-
|
|
246
|
+
width: eighthPtToPt(4)
|
|
356
247
|
};
|
|
357
248
|
const centered = worksheet.printOptions?.horizontalCentered === true;
|
|
358
249
|
return [{
|
|
@@ -369,7 +260,7 @@ function worksheetToBody(worksheet, sharedStrings, styles, date1904, print) {
|
|
|
369
260
|
} } : {},
|
|
370
261
|
...centered ? { alignment: "center" } : {}
|
|
371
262
|
},
|
|
372
|
-
grid: columnWidths,
|
|
263
|
+
grid: columnWidths.map((w) => twipsToPt(w)),
|
|
373
264
|
rows
|
|
374
265
|
}
|
|
375
266
|
}];
|
|
@@ -377,12 +268,12 @@ function worksheetToBody(worksheet, sharedStrings, styles, date1904, print) {
|
|
|
377
268
|
function verticalMergeParent(merges, row, column) {
|
|
378
269
|
for (const m of merges) if (column >= m.startColumn && column <= m.endColumn && row > m.startRow && row <= m.endRow && m.endRow > m.startRow) return m;
|
|
379
270
|
}
|
|
380
|
-
function makeVerticalContinuation(merge, colWindowEnd) {
|
|
271
|
+
function makeVerticalContinuation(merge, colWindowEnd, absR, rowWindowEnd) {
|
|
381
272
|
const span = Math.min(merge.endColumn, colWindowEnd) - merge.startColumn + 1;
|
|
382
273
|
return {
|
|
383
274
|
properties: {
|
|
384
|
-
|
|
385
|
-
...span > 1 ? {
|
|
275
|
+
merge: absR < Math.min(merge.endRow, rowWindowEnd) ? "middle" : "end",
|
|
276
|
+
...span > 1 ? { colSpan: span } : {}
|
|
386
277
|
},
|
|
387
278
|
content: [{
|
|
388
279
|
kind: "paragraph",
|
|
@@ -412,7 +303,7 @@ function runPropsFromXf(xf, styles) {
|
|
|
412
303
|
const props = {};
|
|
413
304
|
if (font.bold) props.bold = true;
|
|
414
305
|
if (font.italic) props.italic = true;
|
|
415
|
-
if (font.sizePt !== void 0) props.
|
|
306
|
+
if (font.sizePt !== void 0) props.fontSizePt = halfPtToPt(Math.round(font.sizePt * 2));
|
|
416
307
|
if (font.colorHex) props.colorHex = font.colorHex;
|
|
417
308
|
return props;
|
|
418
309
|
}
|
|
@@ -459,7 +350,7 @@ function mapBorderEdge(edge) {
|
|
|
459
350
|
const { style, sizeEighthPt } = mapBorderStyle(edge.style);
|
|
460
351
|
return {
|
|
461
352
|
style,
|
|
462
|
-
sizeEighthPt,
|
|
353
|
+
width: eighthPtToPt(sizeEighthPt),
|
|
463
354
|
...edge.colorHex ? { colorHex: edge.colorHex } : {}
|
|
464
355
|
};
|
|
465
356
|
}
|
|
@@ -512,4 +403,4 @@ function cellHasContent(cell) {
|
|
|
512
403
|
return !!cell && (cell.rawValue !== "" || cell.inlineText !== void 0);
|
|
513
404
|
}
|
|
514
405
|
//#endregion
|
|
515
|
-
export {
|
|
406
|
+
export { resolvePrintArea, resolvePrintTitleRows, sectionFromWorksheet, worksheetToBody };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { parseCellRef } from "./cell-reference.js";
|
|
2
2
|
import { XMLParser } from "fast-xml-parser";
|
|
3
|
-
//#region src/
|
|
3
|
+
//#region src/excel/worksheet-parser.ts
|
|
4
4
|
var decoder = new TextDecoder("utf-8");
|
|
5
5
|
var parser = new XMLParser({
|
|
6
6
|
ignoreAttributes: false,
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ResourceStore } from "../core/ir/resources.js";
|
|
2
|
+
import { FEATURES } from "../core/ir/features.js";
|
|
3
|
+
import { EMPTY_STYLE_SHEET } from "../core/style-cascade/resolver.js";
|
|
4
|
+
import "../core/style-cascade/index.js";
|
|
5
|
+
import { bytesInclude } from "../core/bytes.js";
|
|
6
|
+
import { OpcPackage } from "../core/opc/package.js";
|
|
7
|
+
import { parseCoreProperties } from "../core/opc/core-properties.js";
|
|
8
|
+
import "../core/opc/index.js";
|
|
9
|
+
import { parseSharedStrings } from "./shared-strings-parser.js";
|
|
10
|
+
import { parseWorkbook } from "./workbook-parser.js";
|
|
11
|
+
import { parseWorksheet } from "./worksheet-parser.js";
|
|
12
|
+
import { EMPTY_XLSX_STYLES, parseXlsxStyles } from "./styles-parser.js";
|
|
13
|
+
import "./index.js";
|
|
14
|
+
import { resolvePrintArea, resolvePrintTitleRows, sectionFromWorksheet, worksheetToBody } from "./print-model.js";
|
|
15
|
+
//#region src/excel/xlsx-reader.ts
|
|
16
|
+
var WORKBOOK_PART = "xl/workbook.xml";
|
|
17
|
+
var SHARED_STRINGS_PART = "xl/sharedStrings.xml";
|
|
18
|
+
var STYLES_PART = "xl/styles.xml";
|
|
19
|
+
var CORE_PROPS_PART = "docProps/core.xml";
|
|
20
|
+
function readXlsx(xlsx) {
|
|
21
|
+
const pkg = OpcPackage.open(xlsx);
|
|
22
|
+
const workbookData = pkg.getPart(WORKBOOK_PART);
|
|
23
|
+
if (!workbookData) throw new Error("Not a valid xlsx: missing xl/workbook.xml");
|
|
24
|
+
const { sheets, date1904, definedNames } = parseWorkbook(workbookData);
|
|
25
|
+
if (sheets.length === 0) throw new Error("xlsx has no sheets");
|
|
26
|
+
const sharedStringsData = pkg.getPart(SHARED_STRINGS_PART);
|
|
27
|
+
const sharedStrings = sharedStringsData ? parseSharedStrings(sharedStringsData) : [];
|
|
28
|
+
const stylesData = pkg.getPart(STYLES_PART);
|
|
29
|
+
const styles = stylesData ? parseXlsxStyles(stylesData) : EMPTY_XLSX_STYLES;
|
|
30
|
+
const workbookRels = pkg.getPartRelationships(WORKBOOK_PART);
|
|
31
|
+
const body = [];
|
|
32
|
+
let firstSheetSection;
|
|
33
|
+
for (let sheetIdx = 0; sheetIdx < sheets.length; sheetIdx++) {
|
|
34
|
+
const sheet = sheets[sheetIdx];
|
|
35
|
+
const sheetRel = workbookRels.find((r) => r.id === sheet.relationshipId);
|
|
36
|
+
if (!sheetRel) continue;
|
|
37
|
+
const resolved = pkg.resolveRelatedPart(WORKBOOK_PART, sheetRel);
|
|
38
|
+
if (!resolved) continue;
|
|
39
|
+
const worksheet = parseWorksheet(resolved.data);
|
|
40
|
+
if (sheetIdx === 0) firstSheetSection = sectionFromWorksheet(worksheet);
|
|
41
|
+
if (sheetIdx > 0) body.push({
|
|
42
|
+
kind: "paragraph",
|
|
43
|
+
paragraph: {
|
|
44
|
+
properties: { pageBreakBefore: true },
|
|
45
|
+
runs: []
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
const printArea = resolvePrintArea(definedNames, sheetIdx);
|
|
49
|
+
const titleRows = resolvePrintTitleRows(definedNames, sheetIdx);
|
|
50
|
+
const gridLines = worksheet.printOptions?.gridLines === true;
|
|
51
|
+
body.push(...worksheetToBody(worksheet, sharedStrings, styles, date1904, {
|
|
52
|
+
...printArea ? { printArea } : {},
|
|
53
|
+
...titleRows ? { titleRows } : {},
|
|
54
|
+
gridLines
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
const coreData = pkg.getPart(CORE_PROPS_PART);
|
|
58
|
+
const info = infoFromCore(coreData ? parseCoreProperties(coreData) : void 0);
|
|
59
|
+
return {
|
|
60
|
+
doc: {
|
|
61
|
+
kind: "flow",
|
|
62
|
+
body,
|
|
63
|
+
sections: [],
|
|
64
|
+
...firstSheetSection ? { section: firstSheetSection } : {},
|
|
65
|
+
styles: EMPTY_STYLE_SHEET,
|
|
66
|
+
resources: new ResourceStore(),
|
|
67
|
+
...info ? { info } : {}
|
|
68
|
+
},
|
|
69
|
+
losses: []
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
var xlsxReader = {
|
|
73
|
+
id: "xlsx",
|
|
74
|
+
produces: "flow",
|
|
75
|
+
supports: new Set([FEATURES.text, FEATURES.tables]),
|
|
76
|
+
sniff: (bytes) => bytes[0] === 80 && bytes[1] === 75 && bytesInclude(bytes, "xl/workbook.xml"),
|
|
77
|
+
read: (bytes) => readXlsx(bytes)
|
|
78
|
+
};
|
|
79
|
+
function infoFromCore(core) {
|
|
80
|
+
if (!core) return void 0;
|
|
81
|
+
return {
|
|
82
|
+
...core.title ? { title: core.title } : {},
|
|
83
|
+
...core.creator ? { author: core.creator } : {},
|
|
84
|
+
...core.subject ? { subject: core.subject } : {},
|
|
85
|
+
...core.keywords ? { keywords: core.keywords } : {},
|
|
86
|
+
...core.created ? { creationDate: core.created } : {},
|
|
87
|
+
...core.modified ? { modificationDate: core.modified } : {}
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
export { readXlsx, xlsxReader };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FontBytesByVariant } from '../font/index.js';
|
|
2
|
-
import { FetchLike } from '../fonts/index.js';
|
|
1
|
+
import { FontBytesByVariant } from '../core/font/index.js';
|
|
2
|
+
import { FetchLike } from '../core/fonts/index.js';
|
|
3
3
|
import { SignatureOptions, StyledRenderOptions } from '../pdf/index.js';
|
|
4
4
|
export interface ConvertXlsxOptions extends Omit<StyledRenderOptions, 'registry' | 'styles'> {
|
|
5
5
|
readonly fontBytes?: Uint8Array;
|
|
@@ -9,5 +9,16 @@ export interface ConvertXlsxOptions extends Omit<StyledRenderOptions, 'registry'
|
|
|
9
9
|
readonly embedSource?: boolean;
|
|
10
10
|
readonly signature?: SignatureOptions;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Convert a .xlsx to PDF in one shot.
|
|
14
|
+
*
|
|
15
|
+
* @deprecated Use `Ream.parse(bytes).convert('pdf', options)` — one parse,
|
|
16
|
+
* any number of targets. This function remains for 0.1.x compatibility.
|
|
17
|
+
*/
|
|
12
18
|
export declare function convertXlsxToPdf(xlsx: Uint8Array, options?: ConvertXlsxOptions): Promise<Uint8Array>;
|
|
19
|
+
/**
|
|
20
|
+
* Synchronous one-shot conversion (requires `fonts`/`fontBytes`).
|
|
21
|
+
*
|
|
22
|
+
* Internal since 1.0 — see the async variant above.
|
|
23
|
+
*/
|
|
13
24
|
export declare function convertXlsxToPdfSync(xlsx: Uint8Array, options: ConvertXlsxOptions): Uint8Array;
|