yh-hiprint 2.5.3 → 3.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/types.ts ADDED
@@ -0,0 +1,756 @@
1
+ export declare interface HiprintOption {
2
+ code: string;
3
+ params: Object;
4
+ data: Record<string, any> | Record<string, any>[];
5
+ isCustom: boolean;
6
+ }
7
+
8
+ //#region Hiprint 类型文件
9
+
10
+ /** 打印元素唯一标识 */
11
+ type Tid = string;
12
+
13
+ export interface Field {
14
+ field: string;
15
+ text: string;
16
+ }
17
+
18
+ export enum PrintElementTypes {
19
+ /** 文本 */
20
+ TEXT = 'text',
21
+ /** 图片 */
22
+ IMAGE = 'image',
23
+ /** 长文本 */
24
+ LONGTEXT = 'longtext',
25
+ /** 表格 */
26
+ TABLE = 'table',
27
+ /** HTML */
28
+ HTML = 'html',
29
+ /** 横线 */
30
+ HLINE = 'hline',
31
+ /** 竖线 */
32
+ VLINE = 'vline',
33
+ /** 矩形 */
34
+ RECT = 'rect',
35
+ /** 圆形 */
36
+ OVAL = 'oval',
37
+ /** 面板 */
38
+ PANEL = 'panel',
39
+ /** 条形码 */
40
+ BARCODE = 'barcode',
41
+ /** 二维码 */
42
+ QRCODE = 'qrcode',
43
+ }
44
+
45
+ export interface BasePrintElementOptions {
46
+ /** 左边距 */
47
+ left?: number;
48
+ /** 顶边距 */
49
+ top?: number;
50
+ /** 宽度 */
51
+ width?: number;
52
+ /** 高度 */
53
+ height?: number;
54
+ /** 右边距 */
55
+ right?: number;
56
+ /** 底边距 */
57
+ bottom?: number;
58
+ /** 垂直中心 */
59
+ vCenter?: number;
60
+ /** 水平中心 */
61
+ hCenter?: number;
62
+ /** 标题 */
63
+ title?: string;
64
+ /** 字段名 */
65
+ field?: string;
66
+ /** 是否固定定位 */
67
+ fixed?: boolean;
68
+ /** 拖拽方向 */
69
+ axis?: 'v' | 'h';
70
+ /** 旋转角度 */
71
+ transform?: number;
72
+ /** 在页面中的显示规则 */
73
+ showInPage?: 'first' | 'odd' | 'even' | 'last';
74
+ /** 是否同步坐标 */
75
+ coordinateSync?: boolean;
76
+ /** 是否同步宽高 */
77
+ widthHeightSync?: boolean;
78
+ /** 边框样式 */
79
+ borderStyle?: string;
80
+ /** 边框颜色 */
81
+ borderColor?: string;
82
+ /** 边框宽度 */
83
+ borderWidth?: string;
84
+ /** 背景颜色 */
85
+ backgroundColor?: string;
86
+ /** 缩放 */
87
+ scale?: number;
88
+ /** 层级 */
89
+ zIndex?: number;
90
+ /** 左边框 */
91
+ borderLeft?: string;
92
+ /** 上边框 */
93
+ borderTop?: string;
94
+ /** 右边框 */
95
+ borderRight?: string;
96
+ /** 下边框 */
97
+ borderBottom?: string;
98
+ /** 左内边距 */
99
+ contentPaddingLeft?: number;
100
+ /** 上内边距 */
101
+ contentPaddingTop?: number;
102
+ /** 右内边距 */
103
+ contentPaddingRight?: number;
104
+ /** 下内边距 */
105
+ contentPaddingBottom?: number;
106
+ }
107
+
108
+ export interface TextPrintElementType {
109
+ printElementType: {
110
+ type: PrintElementTypes.TEXT;
111
+ /** 元素类型的标识 */
112
+ tid?: Tid;
113
+ /** 用户托拽列表中显示的名称 */
114
+ title: string;
115
+ /** 打印元素类型所对应的数据Josn的Key */
116
+ field?: string;
117
+ /** 打印设置时,显示的默认值 */
118
+ data?: string;
119
+ /** 文本元素格式化函数 */
120
+ formatter?: (title: string, value: any, options: TextPrintElementType['options'], templateData: any, target: HTMLElement) => string | string;
121
+ /** 文本元素的样式函数 */
122
+ styler?: (value: any, options: TextPrintElementType['options'], target: HTMLElement, templateData: any) => CSSStyleDeclaration | string;
123
+ /** 元素渲染完成事件 */
124
+ onRendered?: (target, options: TextPrintElementType['options'], paperTarget) => void;
125
+ /** 元素的字段数据源 */
126
+ fields?: Field[];
127
+ };
128
+ options: BasePrintElementOptions & {
129
+ /** 标题或内容 */
130
+ title?: string;
131
+ /** 字段名称,从数据源获取数据的属性名称 */
132
+ field?: string;
133
+ /** 测试数据 设计时使用 */
134
+ testData?: string;
135
+ /** 字体名称 */
136
+ fontFamily?: string;
137
+ /** 字体大小 */
138
+ fontSize?: number;
139
+ /** 字体粗细 */
140
+ fontWeight?: string;
141
+ /** 字体间距 */
142
+ letterSpacing?: number;
143
+ /** 字体颜色 */
144
+ color?: string;
145
+ /** 文本描述 */
146
+ textDecoration?: string;
147
+ /** 文字水平对齐 */
148
+ textAlign?: 'left' | 'center' | 'right';
149
+ /** 行高 数字带单位 例如 18pt */
150
+ lineHeight?: number;
151
+ /**
152
+ * 文本类型
153
+ * text - 纯文本
154
+ * barcode - 条形码
155
+ * qrcode - 二维码
156
+ */
157
+ textType?: 'text' | 'barcode' | 'qrcode';
158
+ /** 条形码格式 */
159
+ barcodeMode?: string;
160
+ /** 隐藏标题 */
161
+ hideTitle?: boolean;
162
+ /**
163
+ * 页眉/页脚/固定定位等元素显示规则
164
+ * first - 首页显示
165
+ * odd - 奇数页显示
166
+ * even - 偶数页显示
167
+ * last - 尾页显示
168
+ */
169
+ showInPage?: 'first' | 'odd' | 'even' | 'last';
170
+ /** 固定定位 */
171
+ fixed?: boolean;
172
+ /** 打印设计时拖拽方向 */
173
+ axis?: 'v' | 'h';
174
+ /** 旋转角度 */
175
+ transform?: number;
176
+ /** 数据类型 */
177
+ dataType?: string;
178
+ /** 格式化 */
179
+ format?: string;
180
+ /** 文本垂直对齐 */
181
+ textContentVerticalAlign?: string;
182
+ /** 文本换行 */
183
+ textContentWrap?: string;
184
+ /** 不显示在页面 */
185
+ unShowInPage?: string;
186
+ /** 大写 */
187
+ upperCase?: string;
188
+ /** 二维码等级 */
189
+ qrCodeLevel?: number;
190
+ /** 分页 */
191
+ pageBreak?: boolean;
192
+ };
193
+ }
194
+
195
+ export interface ImagePrintElementType {
196
+ printElementType: {
197
+ /** 元素类型的标识 */
198
+ tid?: string;
199
+ title: string;
200
+ type: PrintElementTypes.IMAGE;
201
+ /** 打印元素类型所对应的数据Josn的Key */
202
+ field?: string;
203
+ /** 打印设置时,显示的默认值 */
204
+ data?: string;
205
+ /** 文本元素格式化函数 */
206
+ formatter?: (value: any, options: ImagePrintElementType['options'], templateData: any) => string | string;
207
+ /** 文本元素的样式函数 */
208
+ styler?: (value: any, options: ImagePrintElementType['options'], target: HTMLElement, templateData: any) => CSSStyleDeclaration | string;
209
+ /** 元素渲染完成事件 */
210
+ onRendered?: (target, options: ImagePrintElementType['options'], paperTarget) => void;
211
+ /** 元素的字段数据源 */
212
+ fields?: Field[];
213
+ };
214
+ options: BasePrintElementOptions & {
215
+ /** 标题或内容 */
216
+ title?: string;
217
+ /** 字段名称 */
218
+ field?: string;
219
+ /** field不存在的情况下,显示src的内容 */
220
+ src?: string;
221
+ /**
222
+ * 页眉/页脚/固定定位等元素显示规则
223
+ * first - 首页显示
224
+ * odd - 奇数页显示
225
+ * even - 偶数页显示
226
+ * last - 尾页显示
227
+ */
228
+ showInPage?: 'first' | 'odd' | 'even' | 'last';
229
+ /** 固定定位 */
230
+ fixed?: boolean;
231
+ /** 打印设计时拖拽方向 */
232
+ axis?: 'v' | 'h';
233
+ /** 旋转角度 */
234
+ transform?: number;
235
+ /** 数据类型 */
236
+ dataType?: string;
237
+ /** 格式化 */
238
+ format?: string;
239
+ /** 文本垂直对齐 */
240
+ textContentVerticalAlign?: string;
241
+ /** 文本换行 */
242
+ textContentWrap?: string;
243
+ /** 不显示在页面 */
244
+ unShowInPage?: string;
245
+ /** 缩放 */
246
+ scale?: number;
247
+ /** 层级 */
248
+ zIndex?: number;
249
+ };
250
+ }
251
+
252
+ export interface HlinePrintElementType {
253
+ printElementType: {
254
+ /** 元素类型的标识 */
255
+ tid?: string;
256
+ title: string;
257
+ type: PrintElementTypes.HLINE;
258
+ /** 元素渲染完成事件 */
259
+ onRendered?: (target, options: HlinePrintElementType['options'], paperTarget) => void;
260
+ };
261
+ options: BasePrintElementOptions & {
262
+ /** 边框颜色 */
263
+ borderColor?: string;
264
+ /** 边框大小 */
265
+ borderWidth?: string;
266
+ /**
267
+ * 页眉/页脚/固定定位等元素显示规则
268
+ * first - 首页显示
269
+ * odd - 奇数页显示
270
+ * even - 偶数页显示
271
+ * last - 尾页显示
272
+ */
273
+ showInPage?: 'first' | 'odd' | 'even' | 'last';
274
+ /** 固定定位 */
275
+ fixed?: boolean;
276
+ /** 打印设计时拖拽方向 */
277
+ axis?: 'v' | 'h';
278
+ /** 旋转角度 */
279
+ transform?: number;
280
+ /** 数据类型 */
281
+ dataType?: string;
282
+ /** 格式化 */
283
+ format?: string;
284
+ /** 文本垂直对齐 */
285
+ textContentVerticalAlign?: string;
286
+ /** 文本换行 */
287
+ textContentWrap?: string;
288
+ /** 不显示在页面 */
289
+ unShowInPage?: string;
290
+ /** 缩放 */
291
+ scale?: number;
292
+ /** 层级 */
293
+ zIndex?: number;
294
+ };
295
+ }
296
+
297
+ export interface VlinePrintElementType {
298
+ printElementType: {
299
+ /** 元素类型的标识 */
300
+ tid?: string;
301
+ title: string;
302
+ type: PrintElementTypes.VLINE;
303
+ /** 元素渲染完成事件 */
304
+ onRendered?: (target, options: VlinePrintElementType['options'], paperTarget) => void;
305
+ };
306
+ options: BasePrintElementOptions & {
307
+ /** 边框颜色 */
308
+ borderColor?: string;
309
+ /** 边框大小 */
310
+ borderWidth?: string;
311
+ /**
312
+ * 页眉/页脚/固定定位等元素显示规则
313
+ * first - 首页显示
314
+ * odd - 奇数页显示
315
+ * even - 偶数页显示
316
+ * last - 尾页显示
317
+ */
318
+ showInPage?: 'first' | 'odd' | 'even' | 'last';
319
+ /** 固定定位 */
320
+ fixed?: boolean;
321
+ /** 打印设计时拖拽方向 */
322
+ axis?: 'v' | 'h';
323
+ /** 旋转角度 */
324
+ transform?: number;
325
+ /** 数据类型 */
326
+ dataType?: string;
327
+ /** 格式化 */
328
+ format?: string;
329
+ /** 文本垂直对齐 */
330
+ textContentVerticalAlign?: string;
331
+ /** 文本换行 */
332
+ textContentWrap?: string;
333
+ /** 不显示在页面 */
334
+ unShowInPage?: string;
335
+ /** 缩放 */
336
+ scale?: number;
337
+ /** 层级 */
338
+ zIndex?: number;
339
+ };
340
+ }
341
+
342
+ export interface RectPrintElementType {
343
+ printElementType: {
344
+ /** 元素类型的标识 */
345
+ tid?: string;
346
+ title: string;
347
+ type: PrintElementTypes.RECT;
348
+ /** 元素渲染完成事件 */
349
+ onRendered?: (target, options: RectPrintElementType['options'], paperTarget) => void;
350
+ };
351
+ options: BasePrintElementOptions & {
352
+ /** 边框颜色 */
353
+ borderColor?: string;
354
+ /** 边框大小 */
355
+ borderWidth?: string;
356
+ /**
357
+ * 页眉/页脚/固定定位等元素显示规则
358
+ * first - 首页显示
359
+ * odd - 奇数页显示
360
+ * even - 偶数页显示
361
+ * last - 尾页显示
362
+ */
363
+ showInPage?: 'first' | 'odd' | 'even' | 'last';
364
+ /** 固定定位 */
365
+ fixed?: boolean;
366
+ /** 打印设计时拖拽方向 */
367
+ axis?: 'v' | 'h';
368
+ /** 旋转角度 */
369
+ transform?: number;
370
+ /** 数据类型 */
371
+ dataType?: string;
372
+ /** 格式化 */
373
+ format?: string;
374
+ /** 文本垂直对齐 */
375
+ textContentVerticalAlign?: string;
376
+ /** 文本换行 */
377
+ textContentWrap?: string;
378
+ /** 不显示在页面 */
379
+ unShowInPage?: string;
380
+ /** 缩放 */
381
+ scale?: number;
382
+ /** 层级 */
383
+ zIndex?: number;
384
+ };
385
+ }
386
+
387
+ export interface OvalPrintElementType {
388
+ printElementType: {
389
+ /** 元素类型的标识 */
390
+ tid?: string;
391
+ title: string;
392
+ type: PrintElementTypes.OVAL;
393
+ /** 元素渲染完成事件 */
394
+ onRendered?: (target, options: OvalPrintElementType['options'], paperTarget) => void;
395
+ };
396
+ options: BasePrintElementOptions & {
397
+ /** 边框颜色 */
398
+ borderColor?: string;
399
+ /** 边框大小 */
400
+ borderWidth?: string;
401
+ /**
402
+ * 页眉/页脚/固定定位等元素显示规则
403
+ * first - 首页显示
404
+ * odd - 奇数页显示
405
+ * even - 偶数页显示
406
+ * last - 尾页显示
407
+ */
408
+ showInPage?: 'first' | 'odd' | 'even' | 'last';
409
+ /** 固定定位 */
410
+ fixed?: boolean;
411
+ /** 打印设计时拖拽方向 */
412
+ axis?: 'v' | 'h';
413
+ /** 旋转角度 */
414
+ transform?: number;
415
+ /** 数据类型 */
416
+ dataType?: string;
417
+ /** 格式化 */
418
+ format?: string;
419
+ /** 文本垂直对齐 */
420
+ textContentVerticalAlign?: string;
421
+ /** 文本换行 */
422
+ textContentWrap?: string;
423
+ /** 不显示在页面 */
424
+ unShowInPage?: string;
425
+ /** 缩放 */
426
+ scale?: number;
427
+ /** 层级 */
428
+ zIndex?: number;
429
+ };
430
+ }
431
+
432
+ export interface TableColumn {
433
+ /** 此宽度只是相对值 实际渲染会等比换算 */
434
+ width?: number;
435
+ /** 列标题 */
436
+ title?: string;
437
+ /** 列所对应的数据字段 */
438
+ field?: string;
439
+ /** 宽度锁定,渲染时不进行等比换算 */
440
+ fixed?: boolean;
441
+ /** 指示一个单元格占据多少行 */
442
+ rowspan?: number;
443
+ /** 指示一个单元格占据多少列 */
444
+ colspan?: number;
445
+ /** 指示如何对齐该列的数据,可以用 'left'、'right'、'center' */
446
+ align?: string;
447
+ /** 指示如何对齐该列的头部,可能的值:'left'、'right'、'center' */
448
+ halign?: string;
449
+ /** 单元格的格式化函数 */
450
+ formatter?: string;
451
+ /** 单元格的样式函数 */
452
+ styler?: string;
453
+ /** 自定义属性 */
454
+ [key: string]: any;
455
+ }
456
+
457
+ export interface TablePrintElementType {
458
+ printElementType: {
459
+ /** 元素类型的标识 */
460
+ tid?: string;
461
+ type: PrintElementTypes.TABLE;
462
+ /** 用户托拽列表中显示的名称 */
463
+ title: string;
464
+ /** 字段名称 */
465
+ field?: string;
466
+ /** 表格的列配置对象 */
467
+ columns: TableColumn[][];
468
+ /** 表格样式函数 */
469
+ styler?: (value: any, options: TablePrintElementType['options']) => CSSStyleDeclaration;
470
+ /** 表格列样式函数 */
471
+ rowStyler?: (value: any, options: TablePrintElementType['options']) => CSSStyleDeclaration;
472
+ /** 表格格式化函数 */
473
+ formatter?: (data: any[], options: TablePrintElementType['options']) => string;
474
+ /** 表格的数据的分组字段 */
475
+ groupFields?: any[];
476
+ /** 分组头格式化函数 */
477
+ groupFormatter?: (groupData: any, options: TablePrintElementType['options']) => string;
478
+ /** 表格脚格式化函数 */
479
+ footerFormatter?: (options: TablePrintElementType['options'], rows: any[], data: any[], currentPageGridRowsData: any[]) => string;
480
+ /** 多组表格脚格式化函数 */
481
+ gridColumnsFooterFormatter?: (options: TablePrintElementType['options'], rows: any[], data: any[], currentPageRowsData: any[]) => string;
482
+ /** 分组脚格式化函数 */
483
+ groupFooterFormatter?: (groupData: any, options: TablePrintElementType['options']) => string;
484
+ /** 元素渲染完成事件 */
485
+ onRendered?: (target, options: TablePrintElementType['options'], paperTarget) => void;
486
+ /** 元素的字段数据源 */
487
+ fields?: Field[];
488
+ };
489
+ options: BasePrintElementOptions & {
490
+ /** 字段名称 */
491
+ field?: string;
492
+ /** 字体 */
493
+ fontFamily?: string;
494
+ /** 字体大小 */
495
+ fontSize?: number;
496
+ /** 行高 */
497
+ lineHeight?: number;
498
+ /** 对齐 left center right */
499
+ textAlign?: 'left' | 'center' | 'right';
500
+ /** 表格边框noBorder或border */
501
+ tableBorder?: 'noBorder' | 'border';
502
+ /** 表头边框noBorder或border或topBorder或bottomBorder或topBottomBorder */
503
+ tableHeaderBorder?: 'noBorder' | 'border' | 'topBorder' | 'bottomBorder' | 'topBottomBorder';
504
+ /** 表头单元格边框noBorder或border */
505
+ tableHeaderCellBorder?: 'noBorder' | 'border';
506
+ /** 表头高度pt */
507
+ tableHeaderRowHeight?: number;
508
+ /** 表头颜色 */
509
+ tableHeaderBackground?: string;
510
+ /** 表头字体大小 */
511
+ tableHeaderFontSize?: number;
512
+ /** 表头字体粗细 */
513
+ tableHeaderFontWeight?: string;
514
+ /** 表体单元格边框noBorder或border */
515
+ tableBodyCellBorder?: 'noBorder' | 'border';
516
+ /** 表头边框noBorder或border或topBorder或bottomBorder或topBottomBorder */
517
+ tableBodyRowBorder?: 'noBorder' | 'border' | 'topBorder' | 'bottomBorder' | 'topBottomBorder';
518
+ /** 标题行高度 */
519
+ tableBodyRowHeight?: number;
520
+ /** 打印设计时拖拽方向 axis v:竖向 h:横向 */
521
+ axis?: 'v' | 'h';
522
+ /** 当长文本或表格数据过少或为空,元素高度将是他们占用的实际高度,下方元素保持原有间距。可以设置元素lHeight属性来设置元素显示的最小高度。 */
523
+ lHeight?: number;
524
+ /** 数据类型 */
525
+ dataType?: string;
526
+ /** 格式化 */
527
+ format?: string;
528
+ /** 文本垂直对齐 */
529
+ textContentVerticalAlign?: string;
530
+ /** 文本换行 */
531
+ textContentWrap?: string;
532
+ /** 不显示在页面 */
533
+ unShowInPage?: string;
534
+ /** 缩放 */
535
+ scale?: number;
536
+ /** 层级 */
537
+ zIndex?: number;
538
+ };
539
+ }
540
+
541
+ export interface LongTextPrintElementType {
542
+ printElementType: {
543
+ /** 元素类型的标识 */
544
+ tid?: string;
545
+ type: PrintElementTypes.LONGTEXT;
546
+ /** 用户托拽列表中显示的名称 */
547
+ title: string;
548
+ /** 打印元素类型所对应的数据Josn的Key */
549
+ field?: string;
550
+ /** 打印设置时,显示的默认值 */
551
+ data?: string;
552
+ /** 文本元素格式化函数 */
553
+ formatter?: (title: string, value: any, options: LongTextPrintElementType['options'], templateData: any) => string | string;
554
+ /** 文本元素的样式函数 */
555
+ styler?: (value: any, options: LongTextPrintElementType['options'], target: HTMLElement, templateData: any) => CSSStyleDeclaration;
556
+ /** 元素渲染完成事件 */
557
+ onRendered?: (target, options: LongTextPrintElementType['options'], paperTarget) => void;
558
+ /** 元素的字段数据源 */
559
+ fields?: Field[];
560
+ };
561
+ options: BasePrintElementOptions & {
562
+ /** 标题或内容 */
563
+ title?: string;
564
+ /** 字段名称 */
565
+ field?: string;
566
+ /** 测试数据,打印设计时 作为data,预览或打印时被真实数据替换 */
567
+ testData?: string;
568
+ /** 字体 */
569
+ fontFamily?: string;
570
+ /** 字体大小 */
571
+ fontSize?: number;
572
+ /** 字体粗细 */
573
+ fontWeight?: string;
574
+ /** 字间距 */
575
+ letterSpacing?: number;
576
+ /** 字体颜色 */
577
+ color?: string;
578
+ /** 文本描述 */
579
+ textDecoration?: string;
580
+ /** 对齐 left center right */
581
+ textAlign?: string;
582
+ /** 行高 */
583
+ lineHeight?: number;
584
+ /** 隐藏标题 */
585
+ hideTitle?: boolean;
586
+ /** 每行缩进 */
587
+ longTextIndent?: number;
588
+ /**
589
+ * 页眉/页脚/固定定位等元素显示规则
590
+ * first - 首页显示
591
+ * odd - 奇数页显示
592
+ * even - 偶数页显示
593
+ * last - 尾页显示
594
+ */
595
+ showInPage?: 'first' | 'odd' | 'even' | 'last';
596
+ /** 固定定位 */
597
+ fixed?: boolean;
598
+ /** 移除段落左侧空白符 */
599
+ leftSpaceRemoved?: boolean;
600
+ /** 打印设计时拖拽方向 */
601
+ axis?: 'v' | 'h';
602
+ /** 当长文本或表格数据过少或为空,元素高度将是他们占用的实际高度,下方元素保持原有间距。可以设置元素lHeight属性来设置元素显示的最小高度。 */
603
+ lHeight?: number;
604
+ /** 旋转角度 */
605
+ transform?: number;
606
+ /** 数据类型 */
607
+ dataType?: string;
608
+ /** 格式化 */
609
+ format?: string;
610
+ /** 文本垂直对齐 */
611
+ textContentVerticalAlign?: string;
612
+ /** 文本换行 */
613
+ textContentWrap?: string;
614
+ /** 不显示在页面 */
615
+ unShowInPage?: string;
616
+ /** 缩放 */
617
+ scale?: number;
618
+ /** 层级 */
619
+ zIndex?: number;
620
+ };
621
+ }
622
+
623
+ export interface HTMLPrintElementType {
624
+ printElementType: {
625
+ /** 元素类型的标识 */
626
+ tid?: string;
627
+ type: PrintElementTypes.HTML;
628
+ /** 用户托拽列表中显示的名称 */
629
+ title: string;
630
+ /** 打印元素类型所对应的数据Josn的Key */
631
+ field?: string;
632
+ /** 打印设置时,显示的默认值 */
633
+ data?: string;
634
+ /** 文本元素格式化函数 */
635
+ formatter?: (data: any, options: HTMLPrintElementType['options']) => string;
636
+ /** 文本元素的样式函数 */
637
+ styler?: (value: any, options: HTMLPrintElementType['options'], target: HTMLElement, templateData: any) => CSSStyleDeclaration;
638
+ /** 元素渲染完成事件 */
639
+ onRendered?: (target, options: HTMLPrintElementType['options'], paperTarget) => void;
640
+ };
641
+ options: BasePrintElementOptions & {
642
+ /** 标题或内容 */
643
+ title?: string;
644
+ /** 字段名称 */
645
+ field?: string;
646
+ /** 测试数据,打印设计时 作为data,预览或打印时被真实数据替换 */
647
+ testData?: string;
648
+ /** 字体 */
649
+ fontFamily?: string;
650
+ /**
651
+ * 页眉/页脚/固定定位等元素显示规则
652
+ * first - 首页显示
653
+ * odd - 奇数页显示
654
+ * even - 偶数页显示
655
+ * last - 尾页显示
656
+ */
657
+ showInPage?: 'first' | 'odd' | 'even' | 'last';
658
+ /** 固定定位 */
659
+ fixed?: boolean;
660
+ /** 打印设计时拖拽方向 */
661
+ axis?: 'v' | 'h';
662
+ /** 旋转角度 */
663
+ transform?: number;
664
+ /** 数据类型 */
665
+ dataType?: string;
666
+ /** 格式化 */
667
+ format?: string;
668
+ /** 文本垂直对齐 */
669
+ textContentVerticalAlign?: string;
670
+ /** 文本换行 */
671
+ textContentWrap?: string;
672
+ /** 不显示在页面 */
673
+ unShowInPage?: string;
674
+ /** 缩放 */
675
+ scale?: number;
676
+ /** 层级 */
677
+ zIndex?: number;
678
+ };
679
+ }
680
+
681
+ /** 二维码类型,继承自TextPrintElementType */
682
+ export interface QRCodePrintElementType extends TextPrintElementType {
683
+ options: TextPrintElementType['options'] & {
684
+ /** 限定文本类型为二维码 */
685
+ textType: 'qrcode';
686
+ };
687
+ }
688
+
689
+ /** 条形码类型,继承自TextPrintElementType */
690
+ export interface BarcodePrintElementType extends TextPrintElementType {
691
+ options: TextPrintElementType['options'] & {
692
+ /** 限定文本类型为条形码 */
693
+ textType: 'barcode';
694
+ };
695
+ }
696
+
697
+ export interface WatermarkOption {
698
+ /** 水印内容 */
699
+ content: string;
700
+ /** 水印旋转角度 */
701
+ rotate: number;
702
+ /** 水印时间 */
703
+ timestamp: boolean;
704
+ /** 水印时间格式 */
705
+ format: string;
706
+ /** 水印字体填充颜色 */
707
+ fillStyle: string;
708
+ /** 水印字体大小 */
709
+ fontSize: string;
710
+ /** 水印宽度 */
711
+ width: number;
712
+ /** 水印高度 */
713
+ height: number;
714
+ }
715
+
716
+ export type PrintElementType = TextPrintElementType | ImagePrintElementType | HlinePrintElementType | VlinePrintElementType | RectPrintElementType | OvalPrintElementType | TablePrintElementType | LongTextPrintElementType | HTMLPrintElementType | QRCodePrintElementType | BarcodePrintElementType;
717
+
718
+ /** Hprint 打印面板创建配置对象 */
719
+ export interface PrintPanelOptions {
720
+ /** 宽度 */
721
+ width: number;
722
+ /** 高度 */
723
+ height: number;
724
+ /** 页脚高度 */
725
+ paperFooter: number;
726
+ /** 页眉高度 */
727
+ paperHeader: number;
728
+ /** 禁用页码 */
729
+ paperNumberDisabled?: boolean;
730
+ /** 页码格式 */
731
+ paperNumberFormat?: string;
732
+ /** 面板打印纸张规则 */
733
+ panelPaperRule?: string;
734
+ /** 首页页尾线位置 */
735
+ firstPaperFooter?: number;
736
+ /** 偶数页页尾线位置 */
737
+ evenPaperFooter?: number;
738
+ /** 奇数页页尾线位置 */
739
+ oddPaperFooter?: number;
740
+ /** 尾页页尾线位置 */
741
+ lastPaperFooter?: number;
742
+ /** 打印左偏移量 */
743
+ leftOffset?: number;
744
+ /** 打印顶部偏移量 */
745
+ topOffset?: number;
746
+ /** 打印元素 */
747
+ printElements: PrintElementType[];
748
+ /** 水印 */
749
+ watermarkOptions: WatermarkOption;
750
+ }
751
+
752
+ export interface HiprintPrintOption {
753
+ panels: PrintPanelOptions[];
754
+ }
755
+
756
+ //#endregion