export declare interface HiprintOption { code: string; params: Object; data: Record | Record[]; isCustom: boolean; } //#region Hiprint 类型文件 /** 打印元素唯一标识 */ type Tid = string; export interface Field { field: string; text: string; } export enum PrintElementTypes { /** 文本 */ TEXT = 'text', /** 图片 */ IMAGE = 'image', /** 长文本 */ LONGTEXT = 'longtext', /** 表格 */ TABLE = 'table', /** HTML */ HTML = 'html', /** 横线 */ HLINE = 'hline', /** 竖线 */ VLINE = 'vline', /** 矩形 */ RECT = 'rect', /** 圆形 */ OVAL = 'oval', /** 面板 */ PANEL = 'panel', /** 条形码 */ BARCODE = 'barcode', /** 二维码 */ QRCODE = 'qrcode', } export interface BasePrintElementOptions { /** 左边距 */ left?: number; /** 顶边距 */ top?: number; /** 宽度 */ width?: number; /** 高度 */ height?: number; /** 右边距 */ right?: number; /** 底边距 */ bottom?: number; /** 垂直中心 */ vCenter?: number; /** 水平中心 */ hCenter?: number; /** 标题 */ title?: string; /** 字段名 */ field?: string; /** 是否固定定位 */ fixed?: boolean; /** 拖拽方向 */ axis?: 'v' | 'h'; /** 旋转角度 */ transform?: number; /** 在页面中的显示规则 */ showInPage?: 'first' | 'odd' | 'even' | 'last'; /** 是否同步坐标 */ coordinateSync?: boolean; /** 是否同步宽高 */ widthHeightSync?: boolean; /** 边框样式 */ borderStyle?: string; /** 边框颜色 */ borderColor?: string; /** 边框宽度 */ borderWidth?: string; /** 背景颜色 */ backgroundColor?: string; /** 缩放 */ scale?: number; /** 层级 */ zIndex?: number; /** 左边框 */ borderLeft?: string; /** 上边框 */ borderTop?: string; /** 右边框 */ borderRight?: string; /** 下边框 */ borderBottom?: string; /** 左内边距 */ contentPaddingLeft?: number; /** 上内边距 */ contentPaddingTop?: number; /** 右内边距 */ contentPaddingRight?: number; /** 下内边距 */ contentPaddingBottom?: number; } export interface TextPrintElementType { printElementType: { type: PrintElementTypes.TEXT; /** 元素类型的标识 */ tid?: Tid; /** 用户托拽列表中显示的名称 */ title: string; /** 打印元素类型所对应的数据Josn的Key */ field?: string; /** 打印设置时,显示的默认值 */ data?: string; /** 文本元素格式化函数 */ formatter?: (title: string, value: any, options: TextPrintElementType['options'], templateData: any, target: HTMLElement) => string | string; /** 文本元素的样式函数 */ styler?: (value: any, options: TextPrintElementType['options'], target: HTMLElement, templateData: any) => CSSStyleDeclaration | string; /** 元素渲染完成事件 */ onRendered?: (target, options: TextPrintElementType['options'], paperTarget) => void; /** 元素的字段数据源 */ fields?: Field[]; }; options: BasePrintElementOptions & { /** 标题或内容 */ title?: string; /** 字段名称,从数据源获取数据的属性名称 */ field?: string; /** 测试数据 设计时使用 */ testData?: string; /** 字体名称 */ fontFamily?: string; /** 字体大小 */ fontSize?: number; /** 字体粗细 */ fontWeight?: string; /** 字体间距 */ letterSpacing?: number; /** 字体颜色 */ color?: string; /** 文本描述 */ textDecoration?: string; /** 文字水平对齐 */ textAlign?: 'left' | 'center' | 'right'; /** 行高 数字带单位 例如 18pt */ lineHeight?: number; /** * 文本类型 * text - 纯文本 * barcode - 条形码 * qrcode - 二维码 */ textType?: 'text' | 'barcode' | 'qrcode'; /** 条形码格式 */ barcodeMode?: string; /** 隐藏标题 */ hideTitle?: boolean; /** * 页眉/页脚/固定定位等元素显示规则 * first - 首页显示 * odd - 奇数页显示 * even - 偶数页显示 * last - 尾页显示 */ showInPage?: 'first' | 'odd' | 'even' | 'last'; /** 固定定位 */ fixed?: boolean; /** 打印设计时拖拽方向 */ axis?: 'v' | 'h'; /** 旋转角度 */ transform?: number; /** 数据类型 */ dataType?: string; /** 格式化 */ format?: string; /** 文本垂直对齐 */ textContentVerticalAlign?: string; /** 文本换行 */ textContentWrap?: string; /** 不显示在页面 */ unShowInPage?: string; /** 大写 */ upperCase?: string; /** 二维码等级 */ qrCodeLevel?: number; /** 分页 */ pageBreak?: boolean; }; } export interface ImagePrintElementType { printElementType: { /** 元素类型的标识 */ tid?: string; title: string; type: PrintElementTypes.IMAGE; /** 打印元素类型所对应的数据Josn的Key */ field?: string; /** 打印设置时,显示的默认值 */ data?: string; /** 文本元素格式化函数 */ formatter?: (value: any, options: ImagePrintElementType['options'], templateData: any) => string | string; /** 文本元素的样式函数 */ styler?: (value: any, options: ImagePrintElementType['options'], target: HTMLElement, templateData: any) => CSSStyleDeclaration | string; /** 元素渲染完成事件 */ onRendered?: (target, options: ImagePrintElementType['options'], paperTarget) => void; /** 元素的字段数据源 */ fields?: Field[]; }; options: BasePrintElementOptions & { /** 标题或内容 */ title?: string; /** 字段名称 */ field?: string; /** field不存在的情况下,显示src的内容 */ src?: string; /** * 页眉/页脚/固定定位等元素显示规则 * first - 首页显示 * odd - 奇数页显示 * even - 偶数页显示 * last - 尾页显示 */ showInPage?: 'first' | 'odd' | 'even' | 'last'; /** 固定定位 */ fixed?: boolean; /** 打印设计时拖拽方向 */ axis?: 'v' | 'h'; /** 旋转角度 */ transform?: number; /** 数据类型 */ dataType?: string; /** 格式化 */ format?: string; /** 文本垂直对齐 */ textContentVerticalAlign?: string; /** 文本换行 */ textContentWrap?: string; /** 不显示在页面 */ unShowInPage?: string; /** 缩放 */ scale?: number; /** 层级 */ zIndex?: number; }; } export interface HlinePrintElementType { printElementType: { /** 元素类型的标识 */ tid?: string; title: string; type: PrintElementTypes.HLINE; /** 元素渲染完成事件 */ onRendered?: (target, options: HlinePrintElementType['options'], paperTarget) => void; }; options: BasePrintElementOptions & { /** 边框颜色 */ borderColor?: string; /** 边框大小 */ borderWidth?: string; /** * 页眉/页脚/固定定位等元素显示规则 * first - 首页显示 * odd - 奇数页显示 * even - 偶数页显示 * last - 尾页显示 */ showInPage?: 'first' | 'odd' | 'even' | 'last'; /** 固定定位 */ fixed?: boolean; /** 打印设计时拖拽方向 */ axis?: 'v' | 'h'; /** 旋转角度 */ transform?: number; /** 数据类型 */ dataType?: string; /** 格式化 */ format?: string; /** 文本垂直对齐 */ textContentVerticalAlign?: string; /** 文本换行 */ textContentWrap?: string; /** 不显示在页面 */ unShowInPage?: string; /** 缩放 */ scale?: number; /** 层级 */ zIndex?: number; }; } export interface VlinePrintElementType { printElementType: { /** 元素类型的标识 */ tid?: string; title: string; type: PrintElementTypes.VLINE; /** 元素渲染完成事件 */ onRendered?: (target, options: VlinePrintElementType['options'], paperTarget) => void; }; options: BasePrintElementOptions & { /** 边框颜色 */ borderColor?: string; /** 边框大小 */ borderWidth?: string; /** * 页眉/页脚/固定定位等元素显示规则 * first - 首页显示 * odd - 奇数页显示 * even - 偶数页显示 * last - 尾页显示 */ showInPage?: 'first' | 'odd' | 'even' | 'last'; /** 固定定位 */ fixed?: boolean; /** 打印设计时拖拽方向 */ axis?: 'v' | 'h'; /** 旋转角度 */ transform?: number; /** 数据类型 */ dataType?: string; /** 格式化 */ format?: string; /** 文本垂直对齐 */ textContentVerticalAlign?: string; /** 文本换行 */ textContentWrap?: string; /** 不显示在页面 */ unShowInPage?: string; /** 缩放 */ scale?: number; /** 层级 */ zIndex?: number; }; } export interface RectPrintElementType { printElementType: { /** 元素类型的标识 */ tid?: string; title: string; type: PrintElementTypes.RECT; /** 元素渲染完成事件 */ onRendered?: (target, options: RectPrintElementType['options'], paperTarget) => void; }; options: BasePrintElementOptions & { /** 边框颜色 */ borderColor?: string; /** 边框大小 */ borderWidth?: string; /** * 页眉/页脚/固定定位等元素显示规则 * first - 首页显示 * odd - 奇数页显示 * even - 偶数页显示 * last - 尾页显示 */ showInPage?: 'first' | 'odd' | 'even' | 'last'; /** 固定定位 */ fixed?: boolean; /** 打印设计时拖拽方向 */ axis?: 'v' | 'h'; /** 旋转角度 */ transform?: number; /** 数据类型 */ dataType?: string; /** 格式化 */ format?: string; /** 文本垂直对齐 */ textContentVerticalAlign?: string; /** 文本换行 */ textContentWrap?: string; /** 不显示在页面 */ unShowInPage?: string; /** 缩放 */ scale?: number; /** 层级 */ zIndex?: number; }; } export interface OvalPrintElementType { printElementType: { /** 元素类型的标识 */ tid?: string; title: string; type: PrintElementTypes.OVAL; /** 元素渲染完成事件 */ onRendered?: (target, options: OvalPrintElementType['options'], paperTarget) => void; }; options: BasePrintElementOptions & { /** 边框颜色 */ borderColor?: string; /** 边框大小 */ borderWidth?: string; /** * 页眉/页脚/固定定位等元素显示规则 * first - 首页显示 * odd - 奇数页显示 * even - 偶数页显示 * last - 尾页显示 */ showInPage?: 'first' | 'odd' | 'even' | 'last'; /** 固定定位 */ fixed?: boolean; /** 打印设计时拖拽方向 */ axis?: 'v' | 'h'; /** 旋转角度 */ transform?: number; /** 数据类型 */ dataType?: string; /** 格式化 */ format?: string; /** 文本垂直对齐 */ textContentVerticalAlign?: string; /** 文本换行 */ textContentWrap?: string; /** 不显示在页面 */ unShowInPage?: string; /** 缩放 */ scale?: number; /** 层级 */ zIndex?: number; }; } export interface TableColumn { /** 此宽度只是相对值 实际渲染会等比换算 */ width?: number; /** 列标题 */ title?: string; /** 列所对应的数据字段 */ field?: string; /** 宽度锁定,渲染时不进行等比换算 */ fixed?: boolean; /** 指示一个单元格占据多少行 */ rowspan?: number; /** 指示一个单元格占据多少列 */ colspan?: number; /** 指示如何对齐该列的数据,可以用 'left'、'right'、'center' */ align?: string; /** 指示如何对齐该列的头部,可能的值:'left'、'right'、'center' */ halign?: string; /** 单元格的格式化函数 */ formatter?: string; /** 单元格的样式函数 */ styler?: string; /** 自定义属性 */ [key: string]: any; } export interface TablePrintElementType { printElementType: { /** 元素类型的标识 */ tid?: string; type: PrintElementTypes.TABLE; /** 用户托拽列表中显示的名称 */ title: string; /** 字段名称 */ field?: string; /** 表格的列配置对象 */ columns: TableColumn[][]; /** 表格样式函数 */ styler?: (value: any, options: TablePrintElementType['options']) => CSSStyleDeclaration; /** 表格列样式函数 */ rowStyler?: (value: any, options: TablePrintElementType['options']) => CSSStyleDeclaration; /** 表格格式化函数 */ formatter?: (data: any[], options: TablePrintElementType['options']) => string; /** 表格的数据的分组字段 */ groupFields?: any[]; /** 分组头格式化函数 */ groupFormatter?: (groupData: any, options: TablePrintElementType['options']) => string; /** 表格脚格式化函数 */ footerFormatter?: (options: TablePrintElementType['options'], rows: any[], data: any[], currentPageGridRowsData: any[]) => string; /** 多组表格脚格式化函数 */ gridColumnsFooterFormatter?: (options: TablePrintElementType['options'], rows: any[], data: any[], currentPageRowsData: any[]) => string; /** 分组脚格式化函数 */ groupFooterFormatter?: (groupData: any, options: TablePrintElementType['options']) => string; /** 元素渲染完成事件 */ onRendered?: (target, options: TablePrintElementType['options'], paperTarget) => void; /** 元素的字段数据源 */ fields?: Field[]; }; options: BasePrintElementOptions & { /** 字段名称 */ field?: string; /** 字体 */ fontFamily?: string; /** 字体大小 */ fontSize?: number; /** 行高 */ lineHeight?: number; /** 对齐 left center right */ textAlign?: 'left' | 'center' | 'right'; /** 表格边框noBorder或border */ tableBorder?: 'noBorder' | 'border'; /** 表头边框noBorder或border或topBorder或bottomBorder或topBottomBorder */ tableHeaderBorder?: 'noBorder' | 'border' | 'topBorder' | 'bottomBorder' | 'topBottomBorder'; /** 表头单元格边框noBorder或border */ tableHeaderCellBorder?: 'noBorder' | 'border'; /** 表头高度pt */ tableHeaderRowHeight?: number; /** 表头颜色 */ tableHeaderBackground?: string; /** 表头字体大小 */ tableHeaderFontSize?: number; /** 表头字体粗细 */ tableHeaderFontWeight?: string; /** 表体单元格边框noBorder或border */ tableBodyCellBorder?: 'noBorder' | 'border'; /** 表头边框noBorder或border或topBorder或bottomBorder或topBottomBorder */ tableBodyRowBorder?: 'noBorder' | 'border' | 'topBorder' | 'bottomBorder' | 'topBottomBorder'; /** 标题行高度 */ tableBodyRowHeight?: number; /** 打印设计时拖拽方向 axis v:竖向 h:横向 */ axis?: 'v' | 'h'; /** 当长文本或表格数据过少或为空,元素高度将是他们占用的实际高度,下方元素保持原有间距。可以设置元素lHeight属性来设置元素显示的最小高度。 */ lHeight?: number; /** 数据类型 */ dataType?: string; /** 格式化 */ format?: string; /** 文本垂直对齐 */ textContentVerticalAlign?: string; /** 文本换行 */ textContentWrap?: string; /** 不显示在页面 */ unShowInPage?: string; /** 缩放 */ scale?: number; /** 层级 */ zIndex?: number; }; } export interface LongTextPrintElementType { printElementType: { /** 元素类型的标识 */ tid?: string; type: PrintElementTypes.LONGTEXT; /** 用户托拽列表中显示的名称 */ title: string; /** 打印元素类型所对应的数据Josn的Key */ field?: string; /** 打印设置时,显示的默认值 */ data?: string; /** 文本元素格式化函数 */ formatter?: (title: string, value: any, options: LongTextPrintElementType['options'], templateData: any) => string | string; /** 文本元素的样式函数 */ styler?: (value: any, options: LongTextPrintElementType['options'], target: HTMLElement, templateData: any) => CSSStyleDeclaration; /** 元素渲染完成事件 */ onRendered?: (target, options: LongTextPrintElementType['options'], paperTarget) => void; /** 元素的字段数据源 */ fields?: Field[]; }; options: BasePrintElementOptions & { /** 标题或内容 */ title?: string; /** 字段名称 */ field?: string; /** 测试数据,打印设计时 作为data,预览或打印时被真实数据替换 */ testData?: string; /** 字体 */ fontFamily?: string; /** 字体大小 */ fontSize?: number; /** 字体粗细 */ fontWeight?: string; /** 字间距 */ letterSpacing?: number; /** 字体颜色 */ color?: string; /** 文本描述 */ textDecoration?: string; /** 对齐 left center right */ textAlign?: string; /** 行高 */ lineHeight?: number; /** 隐藏标题 */ hideTitle?: boolean; /** 每行缩进 */ longTextIndent?: number; /** * 页眉/页脚/固定定位等元素显示规则 * first - 首页显示 * odd - 奇数页显示 * even - 偶数页显示 * last - 尾页显示 */ showInPage?: 'first' | 'odd' | 'even' | 'last'; /** 固定定位 */ fixed?: boolean; /** 移除段落左侧空白符 */ leftSpaceRemoved?: boolean; /** 打印设计时拖拽方向 */ axis?: 'v' | 'h'; /** 当长文本或表格数据过少或为空,元素高度将是他们占用的实际高度,下方元素保持原有间距。可以设置元素lHeight属性来设置元素显示的最小高度。 */ lHeight?: number; /** 旋转角度 */ transform?: number; /** 数据类型 */ dataType?: string; /** 格式化 */ format?: string; /** 文本垂直对齐 */ textContentVerticalAlign?: string; /** 文本换行 */ textContentWrap?: string; /** 不显示在页面 */ unShowInPage?: string; /** 缩放 */ scale?: number; /** 层级 */ zIndex?: number; }; } export interface HTMLPrintElementType { printElementType: { /** 元素类型的标识 */ tid?: string; type: PrintElementTypes.HTML; /** 用户托拽列表中显示的名称 */ title: string; /** 打印元素类型所对应的数据Josn的Key */ field?: string; /** 打印设置时,显示的默认值 */ data?: string; /** 文本元素格式化函数 */ formatter?: (data: any, options: HTMLPrintElementType['options']) => string; /** 文本元素的样式函数 */ styler?: (value: any, options: HTMLPrintElementType['options'], target: HTMLElement, templateData: any) => CSSStyleDeclaration; /** 元素渲染完成事件 */ onRendered?: (target, options: HTMLPrintElementType['options'], paperTarget) => void; }; options: BasePrintElementOptions & { /** 标题或内容 */ title?: string; /** 字段名称 */ field?: string; /** 测试数据,打印设计时 作为data,预览或打印时被真实数据替换 */ testData?: string; /** 字体 */ fontFamily?: string; /** * 页眉/页脚/固定定位等元素显示规则 * first - 首页显示 * odd - 奇数页显示 * even - 偶数页显示 * last - 尾页显示 */ showInPage?: 'first' | 'odd' | 'even' | 'last'; /** 固定定位 */ fixed?: boolean; /** 打印设计时拖拽方向 */ axis?: 'v' | 'h'; /** 旋转角度 */ transform?: number; /** 数据类型 */ dataType?: string; /** 格式化 */ format?: string; /** 文本垂直对齐 */ textContentVerticalAlign?: string; /** 文本换行 */ textContentWrap?: string; /** 不显示在页面 */ unShowInPage?: string; /** 缩放 */ scale?: number; /** 层级 */ zIndex?: number; }; } /** 二维码类型,继承自TextPrintElementType */ export interface QRCodePrintElementType extends TextPrintElementType { options: TextPrintElementType['options'] & { /** 限定文本类型为二维码 */ textType: 'qrcode'; }; } /** 条形码类型,继承自TextPrintElementType */ export interface BarcodePrintElementType extends TextPrintElementType { options: TextPrintElementType['options'] & { /** 限定文本类型为条形码 */ textType: 'barcode'; }; } export interface WatermarkOption { /** 水印内容 */ content: string; /** 水印旋转角度 */ rotate: number; /** 水印时间 */ timestamp: boolean; /** 水印时间格式 */ format: string; /** 水印字体填充颜色 */ fillStyle: string; /** 水印字体大小 */ fontSize: string; /** 水印宽度 */ width: number; /** 水印高度 */ height: number; } export type PrintElementType = TextPrintElementType | ImagePrintElementType | HlinePrintElementType | VlinePrintElementType | RectPrintElementType | OvalPrintElementType | TablePrintElementType | LongTextPrintElementType | HTMLPrintElementType | QRCodePrintElementType | BarcodePrintElementType; /** Hprint 打印面板创建配置对象 */ export interface PrintPanelOptions { /** 宽度 */ width: number; /** 高度 */ height: number; /** 页脚高度 */ paperFooter: number; /** 页眉高度 */ paperHeader: number; /** 禁用页码 */ paperNumberDisabled?: boolean; /** 页码格式 */ paperNumberFormat?: string; /** 面板打印纸张规则 */ panelPaperRule?: string; /** 首页页尾线位置 */ firstPaperFooter?: number; /** 偶数页页尾线位置 */ evenPaperFooter?: number; /** 奇数页页尾线位置 */ oddPaperFooter?: number; /** 尾页页尾线位置 */ lastPaperFooter?: number; /** 打印左偏移量 */ leftOffset?: number; /** 打印顶部偏移量 */ topOffset?: number; /** 打印元素 */ printElements: PrintElementType[]; /** 水印 */ watermarkOptions: WatermarkOption; } export interface HiprintPrintOption { panels: PrintPanelOptions[]; } //#endregion