reamkit 1.2.0 → 1.4.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 (48) hide show
  1. package/README.md +10 -6
  2. package/dist/esm/core/converter/facade.d.ts +2 -2
  3. package/dist/esm/core/converter/facade.js +12 -0
  4. package/dist/esm/core/converter/ream.d.ts +1 -1
  5. package/dist/esm/core/converter/ream.js +14 -3
  6. package/dist/esm/core/document-model/types.d.ts +2 -0
  7. package/dist/esm/core/drawingml/chart-geometry.d.ts +1 -1
  8. package/dist/esm/core/drawingml/chart-geometry.js +79 -117
  9. package/dist/esm/core/drawingml/chart-parser.d.ts +3 -0
  10. package/dist/esm/core/drawingml/chart-parser.js +28 -1
  11. package/dist/esm/core/numbering/apply.js +2 -1
  12. package/dist/esm/core/opc/index.d.ts +3 -0
  13. package/dist/esm/core/opc/index.js +1 -0
  14. package/dist/esm/core/opc/opc-writer.d.ts +28 -0
  15. package/dist/esm/core/opc/opc-writer.js +60 -0
  16. package/dist/esm/core/opc/package.js +3 -2
  17. package/dist/esm/core/opc/relationship-types.d.ts +1 -0
  18. package/dist/esm/core/opc/relationship-types.js +5 -2
  19. package/dist/esm/excel/print-model.d.ts +3 -0
  20. package/dist/esm/excel/print-model.js +4 -8
  21. package/dist/esm/excel/sheet-drawing.d.ts +9 -0
  22. package/dist/esm/excel/sheet-drawing.js +113 -0
  23. package/dist/esm/excel/worksheet-parser.d.ts +1 -0
  24. package/dist/esm/excel/worksheet-parser.js +4 -1
  25. package/dist/esm/excel/xlsx-reader.js +41 -0
  26. package/dist/esm/excel/xlsx-to-pdf.js +25 -18
  27. package/dist/esm/index.d.ts +2 -0
  28. package/dist/esm/index.js +2 -1
  29. package/dist/esm/layout/page-doc.d.ts +1 -0
  30. package/dist/esm/layout/styled-layout.d.ts +2 -0
  31. package/dist/esm/layout/styled-layout.js +321 -171
  32. package/dist/esm/pdf/encryption.d.ts +34 -0
  33. package/dist/esm/pdf/encryption.js +143 -0
  34. package/dist/esm/pdf/index.d.ts +2 -1
  35. package/dist/esm/pdf/styled-page-emitter.d.ts +2 -0
  36. package/dist/esm/pdf/styled-page-emitter.js +25 -7
  37. package/dist/esm/pdf/styled-page-renderer.d.ts +1 -0
  38. package/dist/esm/pdf/styled-page-renderer.js +17 -2
  39. package/dist/esm/pdf/writer.d.ts +2 -0
  40. package/dist/esm/pdf/writer.js +6 -1
  41. package/dist/esm/word/document-parser.js +51 -13
  42. package/dist/esm/word/docx-reader.js +7 -11
  43. package/dist/esm/word/docx-to-pdf.js +23 -13
  44. package/dist/esm/word/docx-writer.d.ts +4 -0
  45. package/dist/esm/word/docx-writer.js +602 -0
  46. package/dist/esm/word/drawing-parser.d.ts +1 -0
  47. package/dist/esm/word/drawing-parser.js +37 -2
  48. package/package.json +4 -3
@@ -2,10 +2,6 @@ import { eighthPtToPt, halfPtToPt, twipsToPt } from "../core/ir/units.js";
2
2
  import { parseAreaRef, parseTitleRowRange } from "./defined-name-ref.js";
3
3
  import { applyNumberFormat } from "./number-format.js";
4
4
  import "./index.js";
5
- //#region src/excel/print-model.ts
6
- var TWIPS_PER_EXCEL_CHAR = 105;
7
- var DEFAULT_COL_TWIPS = 960;
8
- var DEFAULT_ROW_TWIPS = 300;
9
5
  var TWIPS_PER_POINT = 20;
10
6
  var TWIPS_PER_INCH = 1440;
11
7
  var PAPER_SIZES_TWIPS = new Map([
@@ -154,9 +150,9 @@ function worksheetToBody(worksheet, sharedStrings, styles, date1904, print) {
154
150
  const cEnd = Math.min(m.endColumn, colWindowEnd);
155
151
  for (let r = Math.max(m.startRow, rowStart); r <= rEnd; r++) for (let c = Math.max(m.startColumn, colStart); c <= cEnd; c++) if (!(r === m.startRow && c === m.startColumn)) insideMerge.add(key(r, c));
156
152
  }
157
- const columnWidths = new Array(colCount).fill(DEFAULT_COL_TWIPS);
153
+ const columnWidths = new Array(colCount).fill(960);
158
154
  for (const col of worksheet.columns) {
159
- const twips = Math.round(col.widthChars * TWIPS_PER_EXCEL_CHAR);
155
+ const twips = Math.round(col.widthChars * 105);
160
156
  for (let abs = col.min - 1; abs <= col.max - 1; abs++) {
161
157
  const i = abs - colStart;
162
158
  if (i >= 0 && i < colCount) columnWidths[i] = twips;
@@ -164,7 +160,7 @@ function worksheetToBody(worksheet, sharedStrings, styles, date1904, print) {
164
160
  }
165
161
  const totalGridTwips = columnWidths.reduce((sum, w) => sum + w, 0);
166
162
  let totalGridHeightTwips = 0;
167
- for (let r = 0; r < rowCount; r++) totalGridHeightTwips += rowHeightMap.get(r)?.heightTwips ?? DEFAULT_ROW_TWIPS;
163
+ for (let r = 0; r < rowCount; r++) totalGridHeightTwips += rowHeightMap.get(r)?.heightTwips ?? 300;
168
164
  const printScale = computePrintScale(worksheet, totalGridTwips, sheetContentWidthTwips(worksheet), totalGridHeightTwips, sheetContentHeightTwips(worksheet));
169
165
  const scaled = printScale < .999;
170
166
  const breakRows = new Set(worksheet.rowBreaks ?? []);
@@ -217,7 +213,7 @@ function worksheetToBody(worksheet, sharedStrings, styles, date1904, print) {
217
213
  cc++;
218
214
  }
219
215
  if (cc < colCount) {
220
- const charsFit = Math.max(1, Math.round(availTwips / TWIPS_PER_EXCEL_CHAR));
216
+ const charsFit = Math.max(1, Math.round(availTwips / 105));
221
217
  if (text.length > charsFit) text = text.slice(0, charsFit);
222
218
  }
223
219
  }
@@ -0,0 +1,9 @@
1
+ import { OpcPackage } from '../core/opc/index.js';
2
+ import { ParsedWorksheet } from './worksheet-parser.js';
3
+ export interface SheetChartRef {
4
+ readonly chartPartPath: string;
5
+ readonly widthPt: number;
6
+ readonly heightPt: number;
7
+ readonly anchorRow: number;
8
+ }
9
+ export declare function parseSheetDrawing(drawingXml: Uint8Array, drawingPartPath: string, pkg: OpcPackage, worksheet: ParsedWorksheet): Array<SheetChartRef>;
@@ -0,0 +1,113 @@
1
+ import { emuToPt } from "../core/ir/units.js";
2
+ import "./print-model.js";
3
+ import { XMLParser } from "fast-xml-parser";
4
+ //#region src/excel/sheet-drawing.ts
5
+ var CHART_URI = "http://schemas.openxmlformats.org/drawingml/2006/chart";
6
+ var parser = new XMLParser({
7
+ ignoreAttributes: false,
8
+ attributeNamePrefix: "@_",
9
+ removeNSPrefix: true,
10
+ parseTagValue: false
11
+ });
12
+ var TWIPS_PER_PT = 20;
13
+ function parseSheetDrawing(drawingXml, drawingPartPath, pkg, worksheet) {
14
+ const root = parser.parse(new TextDecoder().decode(drawingXml))["wsDr"];
15
+ if (!root || typeof root !== "object") return [];
16
+ const rootObj = root;
17
+ const colWidthPt = makeColWidthPt(worksheet);
18
+ const rowHeightPt = makeRowHeightPt(worksheet);
19
+ const rels = pkg.getPartRelationships(drawingPartPath);
20
+ const out = [];
21
+ for (const kind of [
22
+ "twoCellAnchor",
23
+ "oneCellAnchor",
24
+ "absoluteAnchor"
25
+ ]) for (const anchor of asArray(rootObj[kind])) {
26
+ if (!anchor || typeof anchor !== "object") continue;
27
+ const a = anchor;
28
+ const chartRelId = chartRelIdOf(a);
29
+ if (!chartRelId) continue;
30
+ const rel = rels.find((r) => r.id === chartRelId);
31
+ const resolved = rel ? pkg.resolveRelatedPart(drawingPartPath, rel) : void 0;
32
+ if (!resolved) continue;
33
+ const from = cellMarker(a["from"]);
34
+ let widthPt = 0;
35
+ let heightPt = 0;
36
+ if (kind === "twoCellAnchor") {
37
+ const to = cellMarker(a["to"]);
38
+ if (!from || !to) continue;
39
+ widthPt = spanPt(from.col, from.colOffPt, to.col, to.colOffPt, colWidthPt);
40
+ heightPt = spanPt(from.row, from.rowOffPt, to.row, to.rowOffPt, rowHeightPt);
41
+ } else {
42
+ const ext = a["ext"];
43
+ if (!ext || typeof ext !== "object") continue;
44
+ const e = ext;
45
+ widthPt = emuToPt(num(e["@_cx"]) ?? 0);
46
+ heightPt = emuToPt(num(e["@_cy"]) ?? 0);
47
+ }
48
+ if (widthPt <= 0 || heightPt <= 0) continue;
49
+ out.push({
50
+ chartPartPath: resolved.path,
51
+ widthPt,
52
+ heightPt,
53
+ anchorRow: from?.row ?? 0
54
+ });
55
+ }
56
+ return out.sort((x, y) => x.anchorRow - y.anchorRow);
57
+ }
58
+ function chartRelIdOf(anchor) {
59
+ const frame = anchor["graphicFrame"];
60
+ if (!frame || typeof frame !== "object") return void 0;
61
+ const graphic = frame["graphic"];
62
+ if (!graphic || typeof graphic !== "object") return void 0;
63
+ const data = graphic["graphicData"];
64
+ if (!data || typeof data !== "object") return void 0;
65
+ const d = data;
66
+ if (d["@_uri"] !== CHART_URI) return void 0;
67
+ const chart = d["chart"];
68
+ if (!chart || typeof chart !== "object") return void 0;
69
+ const id = chart["@_id"];
70
+ return typeof id === "string" && id !== "" ? id : void 0;
71
+ }
72
+ function cellMarker(node) {
73
+ if (!node || typeof node !== "object") return void 0;
74
+ const m = node;
75
+ const col = num(m["col"]);
76
+ const row = num(m["row"]);
77
+ if (col === void 0 || row === void 0) return void 0;
78
+ return {
79
+ col,
80
+ row,
81
+ colOffPt: emuToPt(num(m["colOff"]) ?? 0),
82
+ rowOffPt: emuToPt(num(m["rowOff"]) ?? 0)
83
+ };
84
+ }
85
+ function spanPt(from, fromOffPt, to, toOffPt, trackPt) {
86
+ let span = 0;
87
+ for (let i = from; i < to; i++) span += trackPt(i);
88
+ return span - fromOffPt + toOffPt;
89
+ }
90
+ function makeColWidthPt(ws) {
91
+ return (col) => {
92
+ for (const c of ws.columns) if (col >= c.min - 1 && col <= c.max - 1) return c.widthChars * 105 / TWIPS_PER_PT;
93
+ return 960 / TWIPS_PER_PT;
94
+ };
95
+ }
96
+ function makeRowHeightPt(ws) {
97
+ return (row) => {
98
+ for (const r of ws.rowHeights) if (r.row === row) return r.heightPt;
99
+ return 300 / TWIPS_PER_PT;
100
+ };
101
+ }
102
+ function num(v) {
103
+ if (typeof v === "number" && Number.isFinite(v)) return v;
104
+ if (typeof v === "string" && v !== "") {
105
+ const n = Number(v);
106
+ if (Number.isFinite(n)) return n;
107
+ }
108
+ }
109
+ function asArray(v) {
110
+ return Array.isArray(v) ? v : v !== void 0 ? [v] : [];
111
+ }
112
+ //#endregion
113
+ export { parseSheetDrawing };
@@ -56,5 +56,6 @@ export interface ParsedWorksheet {
56
56
  readonly printOptions?: XlsxPrintOptions;
57
57
  readonly rowBreaks?: ReadonlyArray<number>;
58
58
  readonly colBreaks?: ReadonlyArray<number>;
59
+ readonly drawingRelId?: string;
59
60
  }
60
61
  export declare function parseWorksheet(data: Uint8Array): ParsedWorksheet;
@@ -32,13 +32,16 @@ function parseWorksheet(data) {
32
32
  const printOptions = parsePrintOptions(wsObj);
33
33
  const rowBreaks = parseBreaks(wsObj, "rowBreaks");
34
34
  const colBreaks = parseBreaks(wsObj, "colBreaks");
35
+ const drawingNode = wsObj["drawing"];
36
+ const drawingRelId = drawingNode && typeof drawingNode === "object" ? strAttr(drawingNode, "id") : void 0;
35
37
  const printModel = {
36
38
  ...pageMargins ? { pageMargins } : {},
37
39
  ...pageSetup ? { pageSetup } : {},
38
40
  ...fitToPage ? { fitToPage } : {},
39
41
  ...printOptions ? { printOptions } : {},
40
42
  ...rowBreaks.length > 0 ? { rowBreaks } : {},
41
- ...colBreaks.length > 0 ? { colBreaks } : {}
43
+ ...colBreaks.length > 0 ? { colBreaks } : {},
44
+ ...drawingRelId !== void 0 ? { drawingRelId } : {}
42
45
  };
43
46
  const sheetData = wsObj["sheetData"];
44
47
  if (!sheetData || typeof sheetData !== "object") return {
@@ -1,8 +1,13 @@
1
+ import { pt } from "../core/ir/units.js";
1
2
  import { ResourceStore } from "../core/ir/resources.js";
2
3
  import { FEATURES } from "../core/ir/features.js";
3
4
  import { EMPTY_STYLE_SHEET, resolveBodyStyles } from "../core/style-cascade/resolver.js";
4
5
  import "../core/style-cascade/index.js";
5
6
  import { bytesInclude } from "../core/bytes.js";
7
+ import { DEFAULT_THEME_PALETTE, makeColorResolver } from "../core/drawingml/colors.js";
8
+ import { parseChart, withChartColorStyle } from "../core/drawingml/chart-parser.js";
9
+ import { parseTheme } from "../core/drawingml/theme-parser.js";
10
+ import { isOoxmlRel } from "../core/opc/relationship-types.js";
6
11
  import { OpcPackage } from "../core/opc/package.js";
7
12
  import { parseCoreProperties } from "../core/opc/core-properties.js";
8
13
  import "../core/opc/index.js";
@@ -12,6 +17,7 @@ import { parseWorksheet } from "./worksheet-parser.js";
12
17
  import { EMPTY_XLSX_STYLES, parseXlsxStyles } from "./styles-parser.js";
13
18
  import "./index.js";
14
19
  import { resolvePrintArea, resolvePrintTitleRows, sectionFromWorksheet, worksheetToBody } from "./print-model.js";
20
+ import { parseSheetDrawing } from "./sheet-drawing.js";
15
21
  //#region src/excel/xlsx-reader.ts
16
22
  var WORKBOOK_PART = "xl/workbook.xml";
17
23
  var SHARED_STRINGS_PART = "xl/sharedStrings.xml";
@@ -29,6 +35,8 @@ function readXlsx(xlsx) {
29
35
  const styles = stylesData ? parseXlsxStyles(stylesData) : EMPTY_XLSX_STYLES;
30
36
  const workbookRels = pkg.getPartRelationships(WORKBOOK_PART);
31
37
  const body = [];
38
+ const charts = /* @__PURE__ */ new Map();
39
+ const resolveColor = buildXlsxColorResolver(pkg, workbookRels);
32
40
  let firstSheetSection;
33
41
  for (let sheetIdx = 0; sheetIdx < sheets.length; sheetIdx++) {
34
42
  const sheet = sheets[sheetIdx];
@@ -53,6 +61,27 @@ function readXlsx(xlsx) {
53
61
  ...titleRows ? { titleRows } : {},
54
62
  gridLines
55
63
  }));
64
+ if (worksheet.drawingRelId) {
65
+ const drawingRel = pkg.getPartRelationships(resolved.path).find((r) => r.id === worksheet.drawingRelId);
66
+ const drawing = drawingRel ? pkg.resolveRelatedPart(resolved.path, drawingRel) : void 0;
67
+ if (drawing) for (const ref of parseSheetDrawing(drawing.data, drawing.path, pkg, worksheet)) {
68
+ if (!charts.has(ref.chartPartPath)) {
69
+ const chartData = pkg.getPart(ref.chartPartPath);
70
+ const parsed = chartData ? parseChart(chartData, resolveColor) : null;
71
+ if (!parsed) continue;
72
+ charts.set(ref.chartPartPath, withChartColorStyle(parsed, pkg, ref.chartPartPath, resolveColor));
73
+ }
74
+ body.push({
75
+ kind: "chart",
76
+ chart: {
77
+ chartRelId: ref.chartPartPath,
78
+ width: pt(ref.widthPt),
79
+ height: pt(ref.heightPt),
80
+ paragraphProperties: {}
81
+ }
82
+ });
83
+ }
84
+ }
56
85
  }
57
86
  const coreData = pkg.getPart(CORE_PROPS_PART);
58
87
  const info = infoFromCore(coreData ? parseCoreProperties(coreData) : void 0);
@@ -64,11 +93,23 @@ function readXlsx(xlsx) {
64
93
  ...firstSheetSection ? { section: firstSheetSection } : {},
65
94
  styles: EMPTY_STYLE_SHEET,
66
95
  resources: new ResourceStore(),
96
+ ...charts.size > 0 ? { charts } : {},
67
97
  ...info ? { info } : {}
68
98
  },
69
99
  losses: []
70
100
  };
71
101
  }
102
+ function buildXlsxColorResolver(pkg, workbookRels) {
103
+ const palette = new Map(DEFAULT_THEME_PALETTE);
104
+ for (const rel of workbookRels) {
105
+ if (!isOoxmlRel(rel.type, "theme")) continue;
106
+ const resolved = pkg.resolveRelatedPart(WORKBOOK_PART, rel);
107
+ if (!resolved) continue;
108
+ for (const [slot, hex] of parseTheme(resolved.data)) palette.set(slot, hex);
109
+ break;
110
+ }
111
+ return makeColorResolver(palette);
112
+ }
72
113
  var xlsxReader = {
73
114
  id: "xlsx",
74
115
  produces: "flow",
@@ -1,7 +1,7 @@
1
1
  import { fetchFontSet } from "../core/fonts/remote-fonts.js";
2
2
  import { FontRegistry } from "../core/font/font-registry.js";
3
3
  import { signPdf } from "../pdf/signature.js";
4
- import { renderStyledPdf } from "../pdf/styled-page-renderer.js";
4
+ import { renderStyledPdf, renderStyledPdfEncrypted } from "../pdf/styled-page-renderer.js";
5
5
  import "../pdf/index.js";
6
6
  import { readXlsx } from "./xlsx-reader.js";
7
7
  import { flowRenderOptions } from "../core/converter/project.js";
@@ -18,18 +18,18 @@ async function convertXlsxToPdf(xlsx, options = {}) {
18
18
  ...options,
19
19
  signaturePlaceholder: signature
20
20
  } : options;
21
- let pdf;
22
- if (renderOptions.fonts ?? renderOptions.fontBytes) pdf = convertXlsxToPdfSync(xlsx, renderOptions);
23
- else {
24
- const fonts = await fetchFontSet({
21
+ const withFonts = renderOptions.fonts ?? renderOptions.fontBytes ? renderOptions : {
22
+ ...renderOptions,
23
+ fonts: await fetchFontSet({
25
24
  ...options.fontFamily ? { family: options.fontFamily } : {},
26
25
  ...options.fontFetch ? { fetch: options.fontFetch } : {}
27
- });
28
- pdf = convertXlsxToPdfSync(xlsx, {
29
- ...renderOptions,
30
- fonts
31
- });
26
+ })
27
+ };
28
+ if (withFonts.encrypt) {
29
+ const args = prepareXlsxStyledRender(xlsx, withFonts);
30
+ return renderStyledPdfEncrypted(args.body, args.styled);
32
31
  }
32
+ const pdf = convertXlsxToPdfSync(xlsx, withFonts);
33
33
  return signature ? signPdf(pdf, signature) : pdf;
34
34
  }
35
35
  /**
@@ -38,6 +38,10 @@ async function convertXlsxToPdf(xlsx, options = {}) {
38
38
  * Internal since 1.0 — see the async variant above.
39
39
  */
40
40
  function convertXlsxToPdfSync(xlsx, options) {
41
+ const args = prepareXlsxStyledRender(xlsx, options);
42
+ return renderStyledPdf(args.body, args.styled);
43
+ }
44
+ function prepareXlsxStyledRender(xlsx, options) {
41
45
  const fonts = options.fonts ?? (options.fontBytes ? { regular: options.fontBytes } : void 0);
42
46
  if (!fonts) throw new Error("convertXlsxToPdfSync requires options.fonts or options.fontBytes");
43
47
  const registry = FontRegistry.fromBytes(fonts);
@@ -56,14 +60,17 @@ function convertXlsxToPdfSync(xlsx, options) {
56
60
  relationship: "Source",
57
61
  description: "Source Excel workbook"
58
62
  });
59
- return renderStyledPdf(flow.body, {
60
- registry,
61
- ...flowRenderOptions(flow),
62
- ...section ? { section } : {},
63
- ...info ? { info } : {},
64
- ...attachments.length > 0 ? { attachments } : {},
65
- ...renderOptions
66
- });
63
+ return {
64
+ body: flow.body,
65
+ styled: {
66
+ registry,
67
+ ...flowRenderOptions(flow),
68
+ ...section ? { section } : {},
69
+ ...info ? { info } : {},
70
+ ...attachments.length > 0 ? { attachments } : {},
71
+ ...renderOptions
72
+ }
73
+ };
67
74
  }
68
75
  //#endregion
69
76
  export { convertXlsxToPdf };
@@ -4,6 +4,7 @@ export { renderStyledPdf } from './pdf/index.js';
4
4
  export type { StyledRenderOptions, DocumentInfo } from './pdf/index.js';
5
5
  export { signPdf } from './pdf/index.js';
6
6
  export type { SignaturePlaceholder, SignerCredentials, SignatureOptions } from './pdf/index.js';
7
+ export type { PdfEncryptOptions, PdfPermissions } from './pdf/index.js';
7
8
  export { FontRegistry, parseTtf, subsetTtf } from './core/font/index.js';
8
9
  export type { FontBytesByVariant, FontVariant, ParsedTtf } from './core/font/index.js';
9
10
  export { getHyphenator, createLanguageHyphenator, createHyphenator, splitPatternBundle, } from './core/hyphenation/index.js';
@@ -24,5 +25,6 @@ export type { FontProvider, FontRequest, FontAnswer } from './core/fonts/provide
24
25
  export { svgWriter, writeSvg } from './svg/svg-writer.js';
25
26
  export type { SvgWriteOptions } from './svg/svg-writer.js';
26
27
  export { htmlWriter, writeHtml } from './html/html-writer.js';
28
+ export { docxWriter, writeDocx } from './word/docx-writer.js';
27
29
  export { layoutStyledDocument } from './layout/styled-layout.js';
28
30
  export type { LaidOutDocument } from './layout/page-doc.js';
package/dist/esm/index.js CHANGED
@@ -15,8 +15,9 @@ import { createLanguageHyphenator, getHyphenator } from "./core/hyphenation/inde
15
15
  import { docxReader, readDocx } from "./word/docx-reader.js";
16
16
  import { readXlsx, xlsxReader } from "./excel/xlsx-reader.js";
17
17
  import { NO_FONT, callerFontProvider, chainProviders, embeddedDocFontProvider, isEmbeddingRestricted, localFontProvider, readOs2FsType, remoteFontProvider } from "./core/fonts/provider.js";
18
+ import { docxWriter, writeDocx } from "./word/docx-writer.js";
18
19
  import { htmlWriter, writeHtml } from "./html/html-writer.js";
19
20
  import { svgWriter, writeSvg } from "./svg/svg-writer.js";
20
21
  import { createConverter } from "./core/converter/facade.js";
21
22
  import { Ream } from "./core/converter/ream.js";
22
- export { ConversionLossError, FEATURES, FontRegistry, NO_FONT, Ream, ResourceStore, callerFontProvider, chainProviders, createConverter, createHyphenator, createLanguageHyphenator, docxReader, eighthPtToPt, embeddedDocFontProvider, emuToPt, fetchFontSet, formatLoss, getHyphenator, halfPtToPt, htmlWriter, inchToPt, isEmbeddingRestricted, layoutStyledDocument, localFontProvider, mmToPt, parseTtf, pt, pxToPt, readDocx, readOs2FsType, readXlsx, remoteFontProvider, renderStyledPdf, resolveFamilyKey, signPdf, splitPatternBundle, subsetTtf, svgWriter, twipsToPt, writeHtml, writeSvg, xlsxReader };
23
+ export { ConversionLossError, FEATURES, FontRegistry, NO_FONT, Ream, ResourceStore, callerFontProvider, chainProviders, createConverter, createHyphenator, createLanguageHyphenator, docxReader, docxWriter, eighthPtToPt, embeddedDocFontProvider, emuToPt, fetchFontSet, formatLoss, getHyphenator, halfPtToPt, htmlWriter, inchToPt, isEmbeddingRestricted, layoutStyledDocument, localFontProvider, mmToPt, parseTtf, pt, pxToPt, readDocx, readOs2FsType, readXlsx, remoteFontProvider, renderStyledPdf, resolveFamilyKey, signPdf, splitPatternBundle, subsetTtf, svgWriter, twipsToPt, writeDocx, writeHtml, writeSvg, xlsxReader };
@@ -16,6 +16,7 @@ export interface TextToken {
16
16
  readonly href?: string;
17
17
  readonly footnoteRef?: string;
18
18
  readonly anchor?: string;
19
+ readonly listMarker?: true;
19
20
  readonly resolvedRun: ResolvedRunProperties;
20
21
  readonly font: FontResource;
21
22
  readonly fontSizePt: number;
@@ -5,6 +5,7 @@ import { Hyphenator } from '../core/hyphenation/index.js';
5
5
  import { LaidOutDocument, PageItem } from './page-doc.js';
6
6
  import { AttachedFile } from '../pdf/embedded-file.js';
7
7
  import { SignaturePlaceholder } from '../pdf/signature.js';
8
+ import { PdfEncryptOptions } from '../pdf/encryption.js';
8
9
  import { ResourceStore } from '../core/ir/index.js';
9
10
  import { StructTreeBuilder } from '../pdf/struct-tree.js';
10
11
  export type PdfALevel = 'PDF/A-1b' | 'PDF/A-1a' | 'PDF/A-2b' | 'PDF/A-2u' | 'PDF/A-2a' | 'PDF/A-3b' | 'PDF/A-3u' | 'PDF/A-3a';
@@ -39,6 +40,7 @@ export interface StyledRenderOptions {
39
40
  readonly tagged?: boolean;
40
41
  readonly pdfUA?: boolean;
41
42
  readonly language?: string;
43
+ readonly encrypt?: PdfEncryptOptions;
42
44
  readonly attachments?: ReadonlyArray<AttachedFile>;
43
45
  readonly signaturePlaceholder?: SignaturePlaceholder;
44
46
  }