@cj-tech-master/excelts 6.2.0 → 7.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 (56) hide show
  1. package/README.md +45 -17
  2. package/README_zh.md +43 -15
  3. package/dist/browser/index.browser.d.ts +1 -1
  4. package/dist/browser/index.browser.js +1 -1
  5. package/dist/browser/index.d.ts +2 -2
  6. package/dist/browser/index.js +1 -1
  7. package/dist/browser/modules/excel/stream/workbook-writer.browser.d.ts +0 -2
  8. package/dist/browser/modules/excel/stream/workbook-writer.d.ts +2 -2
  9. package/dist/browser/modules/excel/types.d.ts +0 -2
  10. package/dist/browser/modules/pdf/excel-bridge.d.ts +29 -0
  11. package/dist/browser/modules/pdf/excel-bridge.js +423 -0
  12. package/dist/browser/modules/pdf/index.d.ts +22 -24
  13. package/dist/browser/modules/pdf/index.js +22 -25
  14. package/dist/browser/modules/pdf/pdf.d.ts +121 -0
  15. package/dist/browser/modules/pdf/pdf.js +255 -0
  16. package/dist/browser/modules/pdf/render/layout-engine.d.ts +10 -8
  17. package/dist/browser/modules/pdf/render/layout-engine.js +115 -209
  18. package/dist/browser/modules/pdf/render/pdf-exporter.d.ts +9 -62
  19. package/dist/browser/modules/pdf/render/pdf-exporter.js +38 -78
  20. package/dist/browser/modules/pdf/render/style-converter.d.ts +20 -18
  21. package/dist/browser/modules/pdf/render/style-converter.js +24 -23
  22. package/dist/browser/modules/pdf/types.d.ts +193 -11
  23. package/dist/browser/modules/pdf/types.js +22 -1
  24. package/dist/cjs/index.js +3 -3
  25. package/dist/cjs/modules/pdf/excel-bridge.js +426 -0
  26. package/dist/cjs/modules/pdf/index.js +25 -28
  27. package/dist/cjs/modules/pdf/pdf.js +258 -0
  28. package/dist/cjs/modules/pdf/render/layout-engine.js +116 -210
  29. package/dist/cjs/modules/pdf/render/pdf-exporter.js +37 -79
  30. package/dist/cjs/modules/pdf/render/style-converter.js +24 -23
  31. package/dist/cjs/modules/pdf/types.js +23 -2
  32. package/dist/esm/index.browser.js +1 -1
  33. package/dist/esm/index.js +1 -1
  34. package/dist/esm/modules/pdf/excel-bridge.js +423 -0
  35. package/dist/esm/modules/pdf/index.js +22 -25
  36. package/dist/esm/modules/pdf/pdf.js +255 -0
  37. package/dist/esm/modules/pdf/render/layout-engine.js +115 -209
  38. package/dist/esm/modules/pdf/render/pdf-exporter.js +38 -78
  39. package/dist/esm/modules/pdf/render/style-converter.js +24 -23
  40. package/dist/esm/modules/pdf/types.js +22 -1
  41. package/dist/iife/excelts.iife.js +728 -251
  42. package/dist/iife/excelts.iife.js.map +1 -1
  43. package/dist/iife/excelts.iife.min.js +34 -34
  44. package/dist/types/index.browser.d.ts +1 -1
  45. package/dist/types/index.d.ts +2 -2
  46. package/dist/types/modules/excel/stream/workbook-writer.browser.d.ts +0 -2
  47. package/dist/types/modules/excel/stream/workbook-writer.d.ts +2 -2
  48. package/dist/types/modules/excel/types.d.ts +0 -2
  49. package/dist/types/modules/pdf/excel-bridge.d.ts +29 -0
  50. package/dist/types/modules/pdf/index.d.ts +22 -24
  51. package/dist/types/modules/pdf/pdf.d.ts +121 -0
  52. package/dist/types/modules/pdf/render/layout-engine.d.ts +10 -8
  53. package/dist/types/modules/pdf/render/pdf-exporter.d.ts +9 -62
  54. package/dist/types/modules/pdf/render/style-converter.d.ts +20 -18
  55. package/dist/types/modules/pdf/types.d.ts +193 -11
  56. package/package.json +1 -1
@@ -1,7 +1,189 @@
1
1
  /**
2
2
  * Type definitions for the PDF module.
3
- * Covers export options, page layout, and internal rendering models.
3
+ * Covers input data models, export options, page layout, and internal rendering models.
4
+ *
5
+ * The input data models (PdfWorkbook, PdfSheetData, etc.) are fully independent of
6
+ * the Excel module, allowing the PDF engine to be used standalone.
4
7
  */
8
+ /**
9
+ * Cell value type discriminator for the PDF engine.
10
+ */
11
+ export declare const PdfCellType: {
12
+ readonly Empty: 0;
13
+ readonly String: 1;
14
+ readonly Number: 2;
15
+ readonly Boolean: 3;
16
+ readonly Date: 4;
17
+ readonly RichText: 5;
18
+ readonly Error: 6;
19
+ readonly Formula: 7;
20
+ readonly Hyperlink: 8;
21
+ readonly Merge: 9;
22
+ };
23
+ export type PdfCellTypeValue = (typeof PdfCellType)[keyof typeof PdfCellType];
24
+ /** Color data used across the PDF input model. */
25
+ export interface PdfColorData {
26
+ argb?: string;
27
+ theme?: number;
28
+ tint?: number;
29
+ }
30
+ /** Font style in the PDF input model. */
31
+ export interface PdfFontStyle {
32
+ name?: string;
33
+ size?: number;
34
+ bold?: boolean;
35
+ italic?: boolean;
36
+ strike?: boolean;
37
+ underline?: boolean | string;
38
+ color?: PdfColorData;
39
+ }
40
+ /** Fill data in the PDF input model. */
41
+ export interface PdfFillData {
42
+ type: "pattern" | "gradient";
43
+ pattern?: string;
44
+ fgColor?: PdfColorData;
45
+ stops?: Array<{
46
+ position?: number;
47
+ color: PdfColorData;
48
+ }>;
49
+ }
50
+ /** A single border edge in the PDF input model. */
51
+ export interface PdfBorderSideData {
52
+ style?: string;
53
+ color?: PdfColorData;
54
+ }
55
+ /** Border data in the PDF input model. */
56
+ export interface PdfBordersData {
57
+ top?: Partial<PdfBorderSideData>;
58
+ right?: Partial<PdfBorderSideData>;
59
+ bottom?: Partial<PdfBorderSideData>;
60
+ left?: Partial<PdfBorderSideData>;
61
+ }
62
+ /** Alignment data in the PDF input model. */
63
+ export interface PdfAlignmentData {
64
+ horizontal?: string;
65
+ vertical?: string;
66
+ wrapText?: boolean;
67
+ indent?: number;
68
+ textRotation?: number;
69
+ }
70
+ /** Cell style in the PDF input model. */
71
+ export interface PdfCellStyle {
72
+ font?: Partial<PdfFontStyle>;
73
+ numFmt?: string | {
74
+ formatCode: string;
75
+ };
76
+ fill?: PdfFillData;
77
+ border?: Partial<PdfBordersData>;
78
+ alignment?: Partial<PdfAlignmentData>;
79
+ }
80
+ /** A single run of rich text. */
81
+ export interface PdfRichTextRunData {
82
+ text: string;
83
+ font?: Partial<PdfFontStyle>;
84
+ }
85
+ /** A cell in the PDF input model. */
86
+ export interface PdfCellData {
87
+ type: PdfCellTypeValue;
88
+ value: unknown;
89
+ /** Pre-computed display text */
90
+ text: string;
91
+ style?: Partial<PdfCellStyle>;
92
+ hyperlink?: string;
93
+ /** Formula result (for formula cells) */
94
+ result?: unknown;
95
+ /** Column number (1-based) */
96
+ col: number;
97
+ }
98
+ /** A row in the PDF input model. */
99
+ export interface PdfRowData {
100
+ hidden?: boolean;
101
+ height?: number;
102
+ /** Cells keyed by 1-based column number */
103
+ cells: Map<number, PdfCellData>;
104
+ }
105
+ /** A column in the PDF input model. */
106
+ export interface PdfColumnData {
107
+ hidden?: boolean;
108
+ width?: number;
109
+ }
110
+ /** Page setup configuration. */
111
+ export interface PdfPageSetupData {
112
+ orientation?: string;
113
+ paperSize?: number;
114
+ margins?: {
115
+ left: number;
116
+ right: number;
117
+ top: number;
118
+ bottom: number;
119
+ };
120
+ scale?: number;
121
+ printTitlesRow?: string;
122
+ showGridLines?: boolean;
123
+ printArea?: string;
124
+ }
125
+ /** An image embedded in a sheet. */
126
+ export interface PdfSheetImage {
127
+ data: Uint8Array;
128
+ format: "jpeg" | "png";
129
+ range: {
130
+ tl: {
131
+ col: number;
132
+ row: number;
133
+ nativeCol?: number;
134
+ nativeRow?: number;
135
+ nativeColOff?: number;
136
+ nativeRowOff?: number;
137
+ };
138
+ br?: {
139
+ col: number;
140
+ row: number;
141
+ nativeCol?: number;
142
+ nativeRow?: number;
143
+ nativeColOff?: number;
144
+ nativeRowOff?: number;
145
+ };
146
+ ext?: {
147
+ width: number;
148
+ height: number;
149
+ };
150
+ };
151
+ }
152
+ /** A single sheet in the PDF input model. */
153
+ export interface PdfSheetData {
154
+ name: string;
155
+ state?: "visible" | "hidden" | "veryHidden";
156
+ /** Data bounds (1-based) */
157
+ bounds: {
158
+ top: number;
159
+ left: number;
160
+ bottom: number;
161
+ right: number;
162
+ };
163
+ /** Columns keyed by 1-based column number */
164
+ columns: Map<number, PdfColumnData>;
165
+ /** Rows keyed by 1-based row number */
166
+ rows: Map<number, PdfRowData>;
167
+ /** Merge ranges in "A1:B2" format */
168
+ merges?: string[];
169
+ pageSetup?: PdfPageSetupData;
170
+ /** Row numbers where manual page breaks occur */
171
+ rowBreaks?: number[];
172
+ /** Column numbers where manual page breaks occur */
173
+ colBreaks?: number[];
174
+ /** Embedded images */
175
+ images?: PdfSheetImage[];
176
+ }
177
+ /**
178
+ * A workbook data structure for PDF generation.
179
+ * This is a plain data object — not tied to the Excel module.
180
+ */
181
+ export interface PdfWorkbook {
182
+ title?: string;
183
+ creator?: string;
184
+ subject?: string;
185
+ sheets: PdfSheetData[];
186
+ }
5
187
  /**
6
188
  * Standard page sizes in PDF points (1 point = 1/72 inch).
7
189
  */
@@ -33,7 +215,7 @@ export interface PdfExportOptions {
33
215
  */
34
216
  pageSize?: PageSizeName | PdfPageSize;
35
217
  /**
36
- * Page orientation. If not set, uses the worksheet's pageSetup.orientation.
218
+ * Page orientation. If not set, uses the sheet's pageSetup.orientation.
37
219
  * @default "portrait"
38
220
  */
39
221
  orientation?: PdfOrientation;
@@ -43,8 +225,8 @@ export interface PdfExportOptions {
43
225
  */
44
226
  margins?: Partial<PdfMargins>;
45
227
  /**
46
- * Which worksheets to include. Accepts sheet names or 1-based positions.
47
- * If omitted, all visible worksheets are included.
228
+ * Which sheets to include. Accepts sheet names or 1-based positions.
229
+ * If omitted, all visible sheets are included.
48
230
  */
49
231
  sheets?: (string | number)[];
50
232
  /**
@@ -120,7 +302,7 @@ export interface PdfExportOptions {
120
302
  * ```typescript
121
303
  * import { readFileSync } from "fs";
122
304
  * const font = readFileSync("NotoSansSC-Regular.ttf");
123
- * exporter.export({ font });
305
+ * excelToPdf(workbook, { font });
124
306
  * ```
125
307
  */
126
308
  font?: Uint8Array;
@@ -129,7 +311,7 @@ export interface PdfExportOptions {
129
311
  *
130
312
  * @example
131
313
  * ```typescript
132
- * exporter.export({
314
+ * excelToPdf(workbook, {
133
315
  * encryption: {
134
316
  * ownerPassword: "secret",
135
317
  * userPassword: "open",
@@ -290,7 +472,7 @@ export interface LayoutBorder {
290
472
  export interface LayoutPage {
291
473
  /** Page number (1-based) */
292
474
  pageNumber: number;
293
- /** Resolved rendering options for the worksheet that produced this page */
475
+ /** Resolved rendering options for the sheet that produced this page */
294
476
  options: ResolvedPdfOptions;
295
477
  /** Cells to render on this page */
296
478
  cells: LayoutCell[];
@@ -300,14 +482,14 @@ export interface LayoutPage {
300
482
  height: number;
301
483
  /** Sheet name for this page */
302
484
  sheetName: string;
303
- /** Worksheet column numbers included on this page */
304
- worksheetCols: number[];
485
+ /** Sheet column numbers included on this page */
486
+ sheetCols: number[];
305
487
  /** Column x-offsets (left edges) relative to page content area */
306
488
  columnOffsets: number[];
307
489
  /** Column widths in points */
308
490
  columnWidths: number[];
309
- /** Worksheet row numbers included on this page */
310
- worksheetRows: number[];
491
+ /** Sheet row numbers included on this page */
492
+ sheetRows: number[];
311
493
  /** Row y-offsets (top edges) in page coordinates (PDF bottom-left origin) */
312
494
  rowYPositions: number[];
313
495
  /** Row heights in points */
@@ -1,7 +1,28 @@
1
1
  /**
2
2
  * Type definitions for the PDF module.
3
- * Covers export options, page layout, and internal rendering models.
3
+ * Covers input data models, export options, page layout, and internal rendering models.
4
+ *
5
+ * The input data models (PdfWorkbook, PdfSheetData, etc.) are fully independent of
6
+ * the Excel module, allowing the PDF engine to be used standalone.
4
7
  */
8
+ // =============================================================================
9
+ // PDF Input Data Model (Excel-independent)
10
+ // =============================================================================
11
+ /**
12
+ * Cell value type discriminator for the PDF engine.
13
+ */
14
+ export const PdfCellType = {
15
+ Empty: 0,
16
+ String: 1,
17
+ Number: 2,
18
+ Boolean: 3,
19
+ Date: 4,
20
+ RichText: 5,
21
+ Error: 6,
22
+ Formula: 7,
23
+ Hyperlink: 8,
24
+ Merge: 9
25
+ };
5
26
  /**
6
27
  * Predefined page sizes.
7
28
  */
package/dist/cjs/index.js CHANGED
@@ -17,7 +17,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
17
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.PdfRenderError = exports.PdfError = exports.PageSizes = exports.exportPdf = exports.PdfExporter = exports.uint8ArrayToString = exports.stringToUint8Array = exports.toUint8Array = exports.concatUint8Arrays = exports.getRootCause = exports.getErrorChain = exports.errorToJSON = exports.toError = exports.BaseError = exports.getSupportedFormats = exports.DateFormatter = exports.DateParser = exports.xmlDecode = exports.xmlEncode = exports.uint8ArrayToBase64 = exports.base64ToUint8Array = exports.excelToDate = exports.dateToExcel = exports.encodeRange = exports.decodeRange = exports.encodeCell = exports.decodeCell = exports.encodeRow = exports.decodeRow = exports.encodeCol = exports.decodeCol = exports.DefinedNames = exports.createCsvFormatterStream = exports.createCsvParserStream = exports.CsvFormatterStream = exports.CsvParserStream = exports.WorksheetReader = exports.WorksheetWriter = exports.WorkbookReader = exports.WorkbookWriter = exports.FormCheckbox = exports.DataValidations = exports.Table = exports.Image = exports.Range = exports.Cell = exports.Column = exports.Row = exports.Worksheet = exports.Workbook = void 0;
20
+ exports.PdfRenderError = exports.PdfError = exports.PageSizes = exports.excelToPdf = exports.pdf = exports.uint8ArrayToString = exports.stringToUint8Array = exports.toUint8Array = exports.concatUint8Arrays = exports.getRootCause = exports.getErrorChain = exports.errorToJSON = exports.toError = exports.BaseError = exports.getSupportedFormats = exports.DateFormatter = exports.DateParser = exports.xmlDecode = exports.xmlEncode = exports.uint8ArrayToBase64 = exports.base64ToUint8Array = exports.excelToDate = exports.dateToExcel = exports.encodeRange = exports.decodeRange = exports.encodeCell = exports.decodeCell = exports.encodeRow = exports.decodeRow = exports.encodeCol = exports.decodeCol = exports.DefinedNames = exports.createCsvFormatterStream = exports.createCsvParserStream = exports.CsvFormatterStream = exports.CsvParserStream = exports.WorksheetReader = exports.WorksheetWriter = exports.WorkbookReader = exports.WorkbookWriter = exports.FormCheckbox = exports.DataValidations = exports.Table = exports.Image = exports.Range = exports.Cell = exports.Column = exports.Row = exports.Worksheet = exports.Workbook = void 0;
21
21
  exports.MaxItemsExceededError = exports.ImageError = exports.TableError = exports.PivotTableError = exports.WorksheetNameError = exports.XmlParseError = exports.InvalidValueTypeError = exports.MergeConflictError = exports.RowOutOfBoundsError = exports.ColumnOutOfBoundsError = exports.InvalidAddressError = exports.ExcelStreamStateError = exports.ExcelNotSupportedError = exports.ExcelDownloadError = exports.ExcelFileError = exports.isExcelError = exports.ExcelError = exports.isPdfError = exports.PdfStructureError = exports.PdfFontError = void 0;
22
22
  var workbook_1 = require("./modules/excel/workbook.js");
23
23
  Object.defineProperty(exports, "Workbook", { enumerable: true, get: function () { return workbook_1.Workbook; } });
@@ -118,8 +118,8 @@ Object.defineProperty(exports, "uint8ArrayToString", { enumerable: true, get: fu
118
118
  // PDF Export
119
119
  // =============================================================================
120
120
  var index_1 = require("./modules/pdf/index.js");
121
- Object.defineProperty(exports, "PdfExporter", { enumerable: true, get: function () { return index_1.PdfExporter; } });
122
- Object.defineProperty(exports, "exportPdf", { enumerable: true, get: function () { return index_1.exportPdf; } });
121
+ Object.defineProperty(exports, "pdf", { enumerable: true, get: function () { return index_1.pdf; } });
122
+ Object.defineProperty(exports, "excelToPdf", { enumerable: true, get: function () { return index_1.excelToPdf; } });
123
123
  Object.defineProperty(exports, "PageSizes", { enumerable: true, get: function () { return index_1.PageSizes; } });
124
124
  Object.defineProperty(exports, "PdfError", { enumerable: true, get: function () { return index_1.PdfError; } });
125
125
  Object.defineProperty(exports, "PdfRenderError", { enumerable: true, get: function () { return index_1.PdfRenderError; } });