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.
Files changed (175) hide show
  1. package/README.md +106 -30
  2. package/dist/esm/{bidi → core/bidi}/algorithm.js +1 -1
  3. package/dist/esm/{bidi → core/bidi}/char-types.js +1 -1
  4. package/dist/esm/{bidi → core/bidi}/index.js +1 -1
  5. package/dist/esm/core/bytes.d.ts +1 -0
  6. package/dist/esm/core/bytes.js +11 -0
  7. package/dist/esm/core/converter/facade.d.ts +45 -0
  8. package/dist/esm/core/converter/facade.js +89 -0
  9. package/dist/esm/core/converter/index.d.ts +4 -0
  10. package/dist/esm/core/converter/project.d.ts +4 -0
  11. package/dist/esm/core/converter/project.js +16 -0
  12. package/dist/esm/core/converter/ream.d.ts +35 -0
  13. package/dist/esm/core/converter/ream.js +100 -0
  14. package/dist/esm/{crypto → core/crypto}/asn1.js +1 -1
  15. package/dist/esm/{crypto → core/crypto}/cms.js +1 -1
  16. package/dist/esm/core/document-model/index.d.ts +1 -0
  17. package/dist/esm/{document-model → core/document-model}/types.d.ts +57 -41
  18. package/dist/esm/{ooxml → core}/drawingml/chart-parser.d.ts +1 -1
  19. package/dist/esm/{ooxml → core}/drawingml/chart-parser.js +6 -29
  20. package/dist/esm/{ooxml → core}/drawingml/colors.d.ts +3 -0
  21. package/dist/esm/{ooxml → core}/drawingml/colors.js +32 -2
  22. package/dist/esm/{ooxml → core}/drawingml/theme-parser.js +2 -2
  23. package/dist/esm/{font → core/font}/arabic-joining.js +1 -1
  24. package/dist/esm/{font → core/font}/binary-reader.js +1 -1
  25. package/dist/esm/{font → core/font}/font-registry.d.ts +1 -0
  26. package/dist/esm/{font → core/font}/font-registry.js +17 -16
  27. package/dist/esm/{font → core/font}/index.d.ts +1 -0
  28. package/dist/esm/{font → core/font}/opentype-layout.js +1 -1
  29. package/dist/esm/{font → core/font}/ttf-parser.js +1 -1
  30. package/dist/esm/{font → core/font}/ttf-subset.js +1 -1
  31. package/dist/esm/core/fonts/provider.d.ts +60 -0
  32. package/dist/esm/core/fonts/provider.js +163 -0
  33. package/dist/esm/{fonts → core/fonts}/remote-fonts.js +1 -1
  34. package/dist/esm/{hyphenation → core/hyphenation}/index.js +1 -1
  35. package/dist/esm/{hyphenation → core/hyphenation}/liang.js +1 -1
  36. package/dist/esm/{hyphenation → core/hyphenation}/patterns-en-us.js +1 -1
  37. package/dist/esm/{hyphenation → core/hyphenation}/patterns-ru.js +1 -1
  38. package/dist/esm/core/ir/adapters.d.ts +37 -0
  39. package/dist/esm/core/ir/features.d.ts +25 -0
  40. package/dist/esm/core/ir/features.js +24 -0
  41. package/dist/esm/core/ir/flow.d.ts +24 -0
  42. package/dist/esm/core/ir/index.d.ts +11 -0
  43. package/dist/esm/core/ir/loss.d.ts +22 -0
  44. package/dist/esm/core/ir/loss.js +15 -0
  45. package/dist/esm/core/ir/resources.d.ts +16 -0
  46. package/dist/esm/core/ir/resources.js +50 -0
  47. package/dist/esm/core/ir/units.d.ts +16 -0
  48. package/dist/esm/core/ir/units.js +41 -0
  49. package/dist/esm/core/line-breaker/index.d.ts +2 -0
  50. package/dist/esm/{line-breaker → core/line-breaker}/knuth-plass.js +1 -1
  51. package/dist/esm/{numbering → core/numbering}/state.js +1 -1
  52. package/dist/esm/{opc → core/opc}/core-properties.js +1 -1
  53. package/dist/esm/{opc → core/opc}/package.js +1 -1
  54. package/dist/esm/{opc → core/opc}/relationship-types.js +1 -1
  55. package/dist/esm/{opc → core/opc}/relationships.js +1 -1
  56. package/dist/esm/{ooxml/wordproc → core}/po-helpers.js +1 -1
  57. package/dist/esm/{style-cascade → core/style-cascade}/index.d.ts +2 -2
  58. package/dist/esm/core/style-cascade/index.js +2 -0
  59. package/dist/esm/{style-cascade → core/style-cascade}/resolver.d.ts +1 -0
  60. package/dist/esm/{style-cascade → core/style-cascade}/resolver.js +14 -9
  61. package/dist/esm/{style-cascade → core/style-cascade}/types.d.ts +8 -7
  62. package/dist/esm/{style-cascade → core/style-cascade}/types.js +9 -8
  63. package/dist/esm/{ooxml/spreadsheet → excel}/cell-reference.js +1 -1
  64. package/dist/esm/{ooxml/spreadsheet → excel}/defined-name-ref.js +1 -1
  65. package/dist/esm/{ooxml/spreadsheet → excel}/index.d.ts +1 -1
  66. package/dist/esm/{ooxml/spreadsheet → excel}/number-format.js +1 -1
  67. package/dist/esm/excel/print-model.d.ts +18 -0
  68. package/dist/esm/{converter/xlsx-to-pdf.js → excel/print-model.js} +39 -148
  69. package/dist/esm/{ooxml/spreadsheet → excel}/shared-strings-parser.js +1 -1
  70. package/dist/esm/{ooxml/spreadsheet → excel}/styles-parser.js +1 -1
  71. package/dist/esm/{ooxml/spreadsheet → excel}/workbook-parser.js +1 -1
  72. package/dist/esm/{ooxml/spreadsheet → excel}/worksheet-parser.js +1 -1
  73. package/dist/esm/excel/xlsx-reader.d.ts +4 -0
  74. package/dist/esm/excel/xlsx-reader.js +91 -0
  75. package/dist/esm/{converter → excel}/xlsx-to-pdf.d.ts +13 -2
  76. package/dist/esm/excel/xlsx-to-pdf.js +69 -0
  77. package/dist/esm/index.d.ts +23 -8
  78. package/dist/esm/index.js +18 -11
  79. package/dist/esm/pdf/chart-geometry.d.ts +1 -1
  80. package/dist/esm/pdf/cid-font.d.ts +7 -1
  81. package/dist/esm/pdf/cid-font.js +33 -22
  82. package/dist/esm/pdf/image-xobject.d.ts +13 -0
  83. package/dist/esm/pdf/image-xobject.js +55 -54
  84. package/dist/esm/pdf/index.d.ts +2 -2
  85. package/dist/esm/pdf/math-layout.d.ts +1 -1
  86. package/dist/esm/pdf/preset-geometry.d.ts +1 -1
  87. package/dist/esm/pdf/signature.js +4 -4
  88. package/dist/esm/pdf/styled-page-emitter.d.ts +5 -0
  89. package/dist/esm/pdf/styled-page-emitter.js +542 -0
  90. package/dist/esm/pdf/styled-page-renderer.d.ts +189 -14
  91. package/dist/esm/pdf/styled-page-renderer.js +168 -654
  92. package/dist/esm/pdf/text-page-renderer.d.ts +1 -1
  93. package/dist/esm/svg/svg-writer.d.ts +8 -0
  94. package/dist/esm/svg/svg-writer.js +138 -0
  95. package/dist/esm/word/document-parser.d.ts +16 -0
  96. package/dist/esm/{ooxml/wordproc → word}/document-parser.js +55 -47
  97. package/dist/esm/word/docx-reader.d.ts +4 -0
  98. package/dist/esm/word/docx-reader.js +190 -0
  99. package/dist/esm/word/docx-to-pdf.d.ts +34 -0
  100. package/dist/esm/word/docx-to-pdf.js +112 -0
  101. package/dist/esm/{ooxml/wordproc → word}/drawing-parser.d.ts +10 -9
  102. package/dist/esm/{ooxml/wordproc → word}/drawing-parser.js +15 -42
  103. package/dist/esm/{ooxml/wordproc → word}/font-table.d.ts +2 -2
  104. package/dist/esm/{ooxml/wordproc → word}/font-table.js +2 -2
  105. package/dist/esm/{ooxml/wordproc → word}/index.d.ts +3 -2
  106. package/dist/esm/{ooxml/wordproc → word}/numbering-parser.d.ts +1 -1
  107. package/dist/esm/{ooxml/wordproc → word}/numbering-parser.js +1 -1
  108. package/dist/esm/{ooxml/math → word}/omml-parser.d.ts +2 -2
  109. package/dist/esm/{ooxml/math → word}/omml-parser.js +2 -2
  110. package/dist/esm/{ooxml/wordproc → word}/paragraph-properties.d.ts +1 -1
  111. package/dist/esm/{ooxml/wordproc → word}/paragraph-properties.js +9 -8
  112. package/dist/esm/{ooxml/wordproc → word}/po-to-flat.d.ts +1 -1
  113. package/dist/esm/{ooxml/wordproc → word}/po-to-flat.js +2 -2
  114. package/dist/esm/{ooxml/wordproc → word}/run-properties.d.ts +1 -1
  115. package/dist/esm/{ooxml/wordproc → word}/run-properties.js +3 -2
  116. package/dist/esm/{ooxml/wordproc → word}/settings-parser.js +2 -2
  117. package/dist/esm/word/styles-parser.d.ts +2 -0
  118. package/dist/esm/{ooxml/wordproc → word}/styles-parser.js +4 -7
  119. package/dist/esm/word/table-parser.d.ts +4 -0
  120. package/dist/esm/{ooxml/wordproc → word}/table-parser.js +80 -26
  121. package/dist/esm/{ooxml/wordproc → word}/xml-helpers.js +1 -1
  122. package/package.json +5 -6
  123. package/dist/esm/converter/docx-to-pdf.d.ts +0 -15
  124. package/dist/esm/converter/docx-to-pdf.js +0 -227
  125. package/dist/esm/converter/index.d.ts +0 -4
  126. package/dist/esm/converter/index.js +0 -2
  127. package/dist/esm/document-model/index.d.ts +0 -1
  128. package/dist/esm/line-breaker/index.d.ts +0 -2
  129. package/dist/esm/ooxml/index.d.ts +0 -1
  130. package/dist/esm/ooxml/wordproc/document-parser.d.ts +0 -9
  131. package/dist/esm/ooxml/wordproc/styles-parser.d.ts +0 -3
  132. package/dist/esm/ooxml/wordproc/table-parser.d.ts +0 -3
  133. /package/dist/esm/{bidi → core/bidi}/algorithm.d.ts +0 -0
  134. /package/dist/esm/{bidi → core/bidi}/char-types.d.ts +0 -0
  135. /package/dist/esm/{bidi → core/bidi}/index.d.ts +0 -0
  136. /package/dist/esm/{crypto → core/crypto}/asn1.d.ts +0 -0
  137. /package/dist/esm/{crypto → core/crypto}/cms.d.ts +0 -0
  138. /package/dist/esm/{crypto → core/crypto}/index.d.ts +0 -0
  139. /package/dist/esm/{crypto → core/crypto}/index.js +0 -0
  140. /package/dist/esm/{document-model → core/document-model}/index.js +0 -0
  141. /package/dist/esm/{ooxml → core}/drawingml/theme-parser.d.ts +0 -0
  142. /package/dist/esm/{font → core/font}/arabic-joining.d.ts +0 -0
  143. /package/dist/esm/{font → core/font}/binary-reader.d.ts +0 -0
  144. /package/dist/esm/{font → core/font}/opentype-layout.d.ts +0 -0
  145. /package/dist/esm/{font → core/font}/ttf-parser.d.ts +0 -0
  146. /package/dist/esm/{font → core/font}/ttf-subset.d.ts +0 -0
  147. /package/dist/esm/{fonts → core/fonts}/index.d.ts +0 -0
  148. /package/dist/esm/{fonts → core/fonts}/remote-fonts.d.ts +0 -0
  149. /package/dist/esm/{hyphenation → core/hyphenation}/index.d.ts +0 -0
  150. /package/dist/esm/{hyphenation → core/hyphenation}/liang.d.ts +0 -0
  151. /package/dist/esm/{hyphenation → core/hyphenation}/patterns-en-us.d.ts +0 -0
  152. /package/dist/esm/{hyphenation → core/hyphenation}/patterns-ru.d.ts +0 -0
  153. /package/dist/esm/{line-breaker → core/line-breaker}/knuth-plass.d.ts +0 -0
  154. /package/dist/esm/{numbering → core/numbering}/index.d.ts +0 -0
  155. /package/dist/esm/{numbering → core/numbering}/state.d.ts +0 -0
  156. /package/dist/esm/{opc → core/opc}/core-properties.d.ts +0 -0
  157. /package/dist/esm/{opc → core/opc}/index.d.ts +0 -0
  158. /package/dist/esm/{opc → core/opc}/index.js +0 -0
  159. /package/dist/esm/{opc → core/opc}/package.d.ts +0 -0
  160. /package/dist/esm/{opc → core/opc}/relationship-types.d.ts +0 -0
  161. /package/dist/esm/{opc → core/opc}/relationships.d.ts +0 -0
  162. /package/dist/esm/{ooxml/wordproc → core}/po-helpers.d.ts +0 -0
  163. /package/dist/esm/{ooxml/spreadsheet → excel}/cell-reference.d.ts +0 -0
  164. /package/dist/esm/{ooxml/spreadsheet → excel}/defined-name-ref.d.ts +0 -0
  165. /package/dist/esm/{ooxml/spreadsheet → excel}/index.js +0 -0
  166. /package/dist/esm/{ooxml/spreadsheet → excel}/number-format.d.ts +0 -0
  167. /package/dist/esm/{ooxml/spreadsheet → excel}/shared-strings-parser.d.ts +0 -0
  168. /package/dist/esm/{ooxml/spreadsheet → excel}/styles-parser.d.ts +0 -0
  169. /package/dist/esm/{ooxml/spreadsheet → excel}/workbook-parser.d.ts +0 -0
  170. /package/dist/esm/{ooxml/spreadsheet → excel}/worksheet-parser.d.ts +0 -0
  171. /package/dist/esm/{ooxml/wordproc → word}/index.js +0 -0
  172. /package/dist/esm/{ooxml/wordproc → word}/settings-parser.d.ts +0 -0
  173. /package/dist/esm/{ooxml/wordproc → word}/text-extractor.d.ts +0 -0
  174. /package/dist/esm/{ooxml/wordproc → word}/text-extractor.js +0 -0
  175. /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
- fontSizeHalfPoints: override.fontSizeHalfPoints ?? base.fontSizeHalfPoints,
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
- spacingBeforeTwips: override.spacingBeforeTwips ?? base.spacingBeforeTwips,
69
- spacingAfterTwips: override.spacingAfterTwips ?? base.spacingAfterTwips,
70
- spacingLineTwips: override.spacingLineTwips ?? base.spacingLineTwips,
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
- indentLeftTwips: override.indentLeftTwips ?? base.indentLeftTwips,
73
- indentRightTwips: override.indentRightTwips ?? base.indentRightTwips,
74
- indentFirstLineTwips: override.indentFirstLineTwips ?? base.indentFirstLineTwips,
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 fontSizeHalfPoints: number;
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 spacingBeforeTwips: number;
17
- readonly spacingAfterTwips: number;
18
- readonly spacingLineTwips: number;
17
+ readonly spacingBefore: Pt;
18
+ readonly spacingAfter: Pt;
19
+ readonly spacingLine: Pt;
19
20
  readonly spacingLineRule: 'auto' | 'exact' | 'atLeast';
20
- readonly indentLeftTwips: number;
21
- readonly indentRightTwips: number;
22
- readonly indentFirstLineTwips: number;
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
- //#region src/style-cascade/types.ts
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
- fontSizeHalfPoints: 22,
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
- spacingBeforeTwips: 0,
16
- spacingAfterTwips: 0,
17
- spacingLineTwips: 240,
16
+ spacingBefore: twipsToPt(0),
17
+ spacingAfter: twipsToPt(0),
18
+ spacingLine: twipsToPt(240),
18
19
  spacingLineRule: "auto",
19
- indentLeftTwips: 0,
20
- indentRightTwips: 0,
21
- indentFirstLineTwips: 0,
20
+ indentLeft: twipsToPt(0),
21
+ indentRight: twipsToPt(0),
22
+ indentFirstLine: twipsToPt(0),
22
23
  pageBreakBefore: false,
23
24
  bidi: false
24
25
  };
@@ -1,4 +1,4 @@
1
- //#region src/ooxml/spreadsheet/cell-reference.ts
1
+ //#region src/excel/cell-reference.ts
2
2
  var A = 65;
3
3
  var Z = 90;
4
4
  var a = 97;
@@ -1,5 +1,5 @@
1
1
  import { parseCellRef } from "./cell-reference.js";
2
- //#region src/ooxml/spreadsheet/defined-name-ref.ts
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, } from './workbook-parser.js';
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';
@@ -1,4 +1,4 @@
1
- //#region src/ooxml/spreadsheet/number-format.ts
1
+ //#region src/excel/number-format.ts
2
2
  var BUILTIN = new Map([
3
3
  [0, "General"],
4
4
  [1, "0"],
@@ -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 { FontRegistry } from "../font/font-registry.js";
2
- import { fetchFontSet } from "../fonts/remote-fonts.js";
3
- import { OpcPackage } from "../opc/package.js";
4
- import { parseCoreProperties } from "../opc/core-properties.js";
5
- import "../opc/index.js";
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
- widthTwips: w,
151
- heightTwips: h,
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
- topTwips: Math.round(margins.topInches * TWIPS_PER_INCH),
159
- rightTwips: Math.round(margins.rightInches * TWIPS_PER_INCH),
160
- bottomTwips: Math.round(margins.bottomInches * TWIPS_PER_INCH),
161
- leftTwips: Math.round(margins.leftInches * TWIPS_PER_INCH),
162
- ...margins.headerInches !== void 0 ? { headerTwips: Math.round(margins.headerInches * TWIPS_PER_INCH) } : {},
163
- ...margins.footerInches !== void 0 ? { footerTwips: Math.round(margins.footerInches * TWIPS_PER_INCH) } : {}
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 pageWidthTwips = pageSizeFromSetup(worksheet.pageSetup)?.widthTwips ?? DEFAULT_PAPER_TWIPS[0];
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?.leftTwips ?? TWIPS_PER_INCH;
179
- const right = margins?.rightTwips ?? TWIPS_PER_INCH;
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 pageHeightTwips = pageSizeFromSetup(worksheet.pageSetup)?.heightTwips ?? DEFAULT_PAPER_TWIPS[1];
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?.topTwips ?? TWIPS_PER_INCH;
186
- const bottom = margins?.bottomTwips ?? TWIPS_PER_INCH;
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.fontSizeHalfPoints ?? 22;
95
+ const hp = props.fontSizePt !== void 0 ? Math.round(props.fontSizePt * 2) : 22;
205
96
  return {
206
97
  ...props,
207
- fontSizeHalfPoints: Math.max(2, Math.round(hp * scale))
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 ? { gridSpan: visibleEndCol - merge.startColumn + 1 } : {},
318
- ...merge && Math.min(merge.endRow, rowWindowEnd) > merge.startRow ? { vMerge: "restart" } : {},
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 scaledRowProps = scaled && baseRowProps?.heightTwips !== void 0 ? {
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
- ...scaledRowProps,
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
- sizeEighthPt: 4
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
- vMerge: "continue",
385
- ...span > 1 ? { gridSpan: span } : {}
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.fontSizeHalfPoints = Math.round(font.sizePt * 2);
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 { convertXlsxToPdf, convertXlsxToPdfSync };
406
+ export { resolvePrintArea, resolvePrintTitleRows, sectionFromWorksheet, worksheetToBody };
@@ -1,5 +1,5 @@
1
1
  import { XMLParser } from "fast-xml-parser";
2
- //#region src/ooxml/spreadsheet/shared-strings-parser.ts
2
+ //#region src/excel/shared-strings-parser.ts
3
3
  var decoder = new TextDecoder("utf-8");
4
4
  var parser = new XMLParser({
5
5
  ignoreAttributes: false,
@@ -1,5 +1,5 @@
1
1
  import { XMLParser } from "fast-xml-parser";
2
- //#region src/ooxml/spreadsheet/styles-parser.ts
2
+ //#region src/excel/styles-parser.ts
3
3
  var decoder = new TextDecoder("utf-8");
4
4
  var parser = new XMLParser({
5
5
  ignoreAttributes: false,
@@ -1,5 +1,5 @@
1
1
  import { XMLParser } from "fast-xml-parser";
2
- //#region src/ooxml/spreadsheet/workbook-parser.ts
2
+ //#region src/excel/workbook-parser.ts
3
3
  var decoder = new TextDecoder("utf-8");
4
4
  var parser = new XMLParser({
5
5
  ignoreAttributes: false,
@@ -1,6 +1,6 @@
1
1
  import { parseCellRef } from "./cell-reference.js";
2
2
  import { XMLParser } from "fast-xml-parser";
3
- //#region src/ooxml/spreadsheet/worksheet-parser.ts
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,4 @@
1
+ import { DocumentReader, ReadResult } from '../core/ir/adapters.js';
2
+ import { FlowDoc } from '../core/ir/flow.js';
3
+ export declare function readXlsx(xlsx: Uint8Array): ReadResult<FlowDoc>;
4
+ export declare const xlsxReader: DocumentReader<FlowDoc>;
@@ -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;