生态产品多个设计器现已发布候选版本

查看生态总览
跳转到内容

模型层 core ​

@xihan-print/core 是纯 TypeScript 的模型层:模板类型、校验、编辑操作、元素登记表与分页算法,不依赖 DOM,浏览器、Node.js 与其它 JavaScript 运行环境里都能用。模板类型的字段见模板类型,元素属性见元素。下表按源码模块列出全部导出。

全部导出 ​

extensions ​

名称种类说明
createPrintModel函数合出打印模型:内置扩展 PRINT_CORE_EXTENSION 在前,extensions 按顺序在后。
PRINT_CORE_EXTENSION常量内置扩展:全部内置元素。
PRINT_CORE_EXTENSION_ID常量内置扩展的 id。
PRINT_EXTENSION_SPACES常量打印各层扩展共用的名字空间:元素类型。
PrintCoreExtension接口打印 core 层的扩展:元素原型、编辑方式与校验规则。
PrintModel接口一组扩展合出的打印模型:元素登记表与编辑方式。
PrintRuleContext接口规则拿到的上下文:合并后的元素登记表。

factory ​

名称种类说明
collectDocumentIds函数收集文档中已使用的页面与元素标识。
createDocument函数生成当前 schema 版本的文档。
CreateDocumentOptions接口文档创建选项。
createEdges函数生成四边相等或逐边指定的边距。
createPage函数生成页面模板:页眉单页时优先首页变体,页脚单页时优先末页变体,页码接续上一页面模板。
createPageBandSet函数生成只含空 default 带区的页眉或页脚。
CreatePageOptions接口页面模板创建选项。
createPaper函数按预设名生成纸张。

fields ​

名称种类说明
collectDocumentFields函数列出一份模板引用了哪些数据字段,合成去重的字段树,形状同设计器的 fields。
CollectDocumentFieldsOptions接口collectDocumentFields 的选项。

geometry ​

名称种类说明
getBandRect函数取页眉或页脚带区在纸张上的矩形。
getBodyRect函数取给定页眉、页脚带区之间的正文区。
getContentRect函数取页边距以内的内容区。
getElementRect函数取元素框。
getPageBand函数取页眉或页脚中指定键的带区。
getPaperSize函数取页面按方向换算后的纸张尺寸。
resolvePageBand函数按输出页位置选出页眉或页脚应使用的带区。
resolvePageBandKey函数按输出页位置选出页眉或页脚应使用的带区键。
SheetPosition接口输出页在所属页面模板中的位置。

layout/boxes ​

名称种类说明
MIN_SHRINK_FONT_SIZE常量缩小字号以容纳文字时的最小字号,单位 pt。
SHRINK_FONT_STEP常量缩小字号的步长,单位 pt。

layout/design ​

名称种类说明
DESIGN_FILLER_ROWS常量设置了补空行的表格在设计态示意的空行数。
DESIGN_SAMPLE_ROWS常量表格缺省示意的数据行数。
DesignLayout接口设计态排版结果:各区的布局盒按元素层级排列,坐标为设计坐标。
DesignLayoutOptions接口设计态排版的选项:度量器、表达式引擎、格式化器、区域与时区同分页。
layoutDesign函数按设计坐标排出页面模板的每个元素,页眉页脚取 options.bands 指定的变体。

layout/paginate ​

名称种类说明
DEFAULT_MAX_SHEETS常量输出页总数上限的缺省值。
paginate函数按数据排出模板文档的全部输出页,返回每页每个元素的布局盒。

layout/rich-text ​

名称种类说明
RICH_TEXT_BLOCK_GAP常量顶层块与块之间的段距,基准字号的倍数;列表项之间与列表项里的块之间不留段距。
RICH_TEXT_DIVIDER_WIDTH常量分隔线的线宽,单位 mm。
RICH_TEXT_HEADING_SCALES常量一到三级标题的字号,基准字号的倍数。
RICH_TEXT_LIST_INDENT常量每层列表的缩进,基准字号的倍数。
RICH_TEXT_MARKER_GAP常量项目符号或序号与文字之间的间距,基准字号的倍数。
RICH_TEXT_SCRIPT_SCALE常量上标与下标的字号,所在文字字号的倍数。

layout/text-measure ​

名称种类说明
DEFAULT_FONT_FAMILY常量文字样式没写字体时,量字与渲染共用的字体族。

layout/types ​

名称种类说明
BarCodeLayoutBox接口一维条码布局盒。
EllipseLayoutBox接口椭圆布局盒。
ExtensionLayoutBox接口扩展元素的布局盒,交给运行时层同一类型的渲染;类型没登记时 data 为 null。
ImageLayoutBox接口图片布局盒。
LayoutBand接口输出页选中的页眉或页脚带区。
LayoutBox类型
LayoutBoxBase接口布局盒共有的字段。
LayoutFragment接口跨页续排元素的分段位置。
LayoutSheet接口一张输出页。
LayoutWatermark类型已替换占位的水印。
LineLayoutBox接口直线布局盒。
MatrixCodeLayoutBox接口二维码布局盒。
PaginateOptions接口分页选项。
PAGINATION_DIAGNOSTIC_SEVERITIES常量全部分页诊断码及其固定的严重程度:error 为按模板该画的内容没有画出或输出页被截断,warning 为内容画出了但与设计有出入。
PaginationDiagnostic类型分页诊断:与校验问题同形的 @xihan-ui/designer-kit/schema 的 SchemaIssue,不含文案,严重程度与 target 总是给出。
PaginationDiagnosticCode类型分页诊断码。
PaginationDiagnosticTarget接口分页诊断所在的页面(kind 为 page)或元素(kind 为 element)。
PaginationResult接口分页结果。
PaginationStep类型分页的一步,按发生的先后交给 PaginateOptions.trace。
PrintLayoutError类分页无法进行时抛出的错误。
PrintLayoutErrorCode类型分页无法进行的原因:文档有 error 级校验问题、选项不合法、测量器或格式化器返回了不合法的结果。
RectLayoutBox接口矩形布局盒。
RichTextLayoutBox接口富文本布局盒,跨页时每页一段。
RichTextLine接口富文本排出的一行,长度单位 mm。
RichTextMarker接口列表项的项目符号或序号。
RichTextSpan接口富文本一行里同一样式的一截文字:字号与字间距单位 pt。
TableCellLayout接口表格单元格布局,坐标相对纸张左上角。
TableLayoutBox接口表格布局盒,跨页时每页一段。
TableRowLayout接口表格行布局:表头、数据行、补空行或表尾行。
TextLayoutBox接口文本、长文本与页码的布局盒。
TextMeasurement接口按文本样式排出的文字,长度单位 mm。

operations/apply ​

名称种类说明
applyOperation函数以纯函数方式执行编辑操作:不修改传入的文档,返回新文档与逆操作数组。
ApplyOperationOptions接口操作选项。
applyOperations函数按顺序执行一组编辑操作,整体成功或整体失败(@xihan-ui/designer-kit 的 applyInSequence)。

operations/errors ​

名称种类说明
PrintOperationError类操作无法执行时抛出的错误,code 与 params 供调用方判断与生成文案。
PrintOperationErrorCode类型操作无法执行的原因。

operations/table-plans ​

名称种类说明
MIN_TABLE_COLUMN_WIDTH常量调整列宽时每列的最小宽度,单位 mm。
planInsertFooterRow函数在第 index 个表尾行之前插入一行(index 等于行数时追加)。
planInsertTableColumn函数在第 index 列之前插入一列(index 等于列数时追加在末尾);跨过插入位置的表尾单元格多跨一列,其余表尾行在新列处留空。
planMergeFooterCells函数合并表尾行里 columnIds 覆盖的列范围:与范围相交的单元格(含留空的列)合成一个,合并后的范围扩到它们的并集;保留最左边那个单元格的内容,最左边是留空的列时新建空白单元格。
planMoveTableColumn函数把一列移到第 index 位(按移动后的顺序数)。
planRemoveFooterRow函数删除一个表尾行。
planRemoveTableColumn函数删除一列:只占这一列的表尾单元格删除,跨过它的缩短一列,从它起跨的改由下一列起跨。
planResizeTableColumn函数把一列调到 width 宽,不小于 MIN_TABLE_COLUMN_WIDTH。
planSplitFooterCell函数把表尾行里从 columnId 起跨的单元格拆成只占一列,空出来的列留空。
TableColumnFit类型列宽怎样跟着变:keep 保持表格宽度、各列按比例缩放;resize 改变表格宽度、其余列不动。
TablePlanRefusal类型计划不能执行的原因:只剩一列、移动会拆开跨列的表尾单元格、所选范围只有一个单元格、单元格本来就不跨列。
TablePlanResult类型计划结果:成功时给出 updateElement 的属性修改。

operations/types ​

名称种类说明
AddBandOperation接口为页眉或页脚添加变体带区。
AddElementOperation接口向容器添加元素,index 缺省时放在最上层。
AddPageOperation接口添加页面模板,index 缺省时放在末尾。
MoveElementsOperation接口平移一组元素,单位 mm。
MovePageOperation接口移动页面模板到目标下标。
OperationResult类型操作结果,即 @xihan-ui/designer-kit 的 OperationResult:新文档,以及按顺序作用于新文档即可还原出传入文档的逆操作。
PrintOperation类型编辑操作。
PrintOperationType类型编辑操作的种类。
PropertyChange接口一处属性修改。
RemoveBandOperation接口删除页眉或页脚的变体带区及其中的元素。
RemoveElementOperation接口删除元素。
RemovePageOperation接口删除页面模板。
ReorderElementOperation接口调整元素在容器内的层级。
ReorderTarget类型层级调整目标:最上层、最下层、上移一层、下移一层,或容器内的目标下标。
ReplaceDocumentOperation接口整份换成另一份文档,如在 JSON 编辑框里改完应用;新文档由调用方先校验(validateDocument),操作只记下换之前的那份作逆操作。
ResizeElementOperation接口把元素缩放到新的元素框,元素原型可附带专属缩放行为。
UpdateDocumentOperation接口修改文档属性;不能修改 schemaVersion 与 pages。
UpdateElementOperation接口修改元素属性;不能修改 id 与 type。
UpdatePageOperation接口修改页面设置:名称、纸张、方向、边距、页码规则、水印、参考线、宿主附加数据,以及页眉页脚的 singleSheet 和已有带区的 height。

registry/builtins ​

名称种类说明
createBuiltinElementPrototypes函数生成全部内置元素原型,每次调用返回互不共享的新对象。
scaleTableColumns函数按新的总宽度等比缩放列宽,末列吸收舍入误差;原列宽合计不为正时均分。

registry/part-properties ​

名称种类说明
pageProperties函数页面设置的属性描述,路径相对页面模板;页眉页脚各变体的高度只在该变体存在时显示。
tableBodyProperties函数表体的属性描述,路径相对表体。
tableColumnProperties函数表格列的属性描述,路径相对列;条码码制只在单元格类型为条码时显示。
tableFooterCellProperties函数表尾单元格的属性描述,路径相对单元格。
tableFooterRowProperties函数表尾行的属性描述,路径相对表尾行;单元格另按表尾格编辑。
tableHeaderProperties函数表头的属性描述,路径相对表头;表头隐藏时只显示「是否显示」。

registry/properties ​

名称种类说明
behaviorProperties函数名称、锁定与只预览不打印。
boxProperties函数box 下的背景、边框与内边距。
choices函数一组取值写成 select 编辑方式的选项。
layoutProperties函数坐标、宽高与可选的旋转角度。
property函数生成一条属性描述,缺省为元素上必须有的属性。
PropertyOptions接口属性描述的可选项。
textStyleProperties函数style 下的文本样式。

registry/registry ​

名称种类说明
CreateElementInit接口创建元素的参数。
createElementRegistry函数创建元素类型登记表,默认登记全部内置元素;类型重复时抛出错误。
ElementCategoryGroup接口物料面板中的一个分组。
ElementRegistry接口元素类型登记表。

registry/types ​

名称种类说明
AnyElementPrototype类型任一元素的原型:内置元素的,或扩展元素的。
ELEMENT_CATEGORIES常量内置的物料分组,按面板中的显示顺序;扩展自定的分组排在它们之后。
ElementCategory类型内置的物料分组:文字、图片、数据、图形、条码。
ElementDefaults类型元素默认值:不含标识与坐标。
ElementFieldReference接口元素引用的一个数据字段。
ElementFieldsContext接口列字段引用时拿到的帮手:把常见的内容来源换成引用,扩展元素不必自己解析模板串与表达式。
ElementFlowContext接口跨页扩展元素取值时拿到的上下文:在排版上下文之上还能量文字。
ElementLayoutContext接口扩展元素排版时拿到的上下文。
ElementPrototype接口元素原型:一种元素的默认值、尺寸约束、可编辑属性与专属行为。
ElementValidationContext接口元素专属规则的校验上下文。
ExtensionElementPrototype类型扩展元素的原型:不跨页的给 layout,跨页的给 prepare。
ExtensionFlowBlock接口跨页扩展元素的一块:块不拆开,height 是它占的高度(mm),data 交给渲染,要是 JSON。
ExtensionFlowContent接口跨页扩展元素排出的内容:blocks 依次排;repeat 给了时排在每一段的开头(如表头),算进每段的高度。
FixedExtensionElementPrototype接口不跨页的扩展元素的原型:必须给出 layout。
FlowExtensionElementPrototype接口跨页的扩展元素的原型:必须给出 prepare;只能放在正文区。
NumberControl类型数值属性:designer-kit 的 number 编辑方式,单位取打印的单位。
PAGE_PROPERTY_GROUPS常量页面设置的属性分组取值,按面板中的显示顺序。
PROPERTY_GROUPS常量元素与表格部位的属性分组取值,按面板中的显示顺序。
PropertyControl类型属性编辑方式:@xihan-ui/designer-kit/properties 的内建编辑方式(数值的单位取打印的单位),加上打印专属的复合类型;复合类型由设计器提供对应的专用编辑器。
PropertyControlKind类型属性编辑方式的种类。
PropertyDescriptor接口可编辑属性描述:@xihan-ui/designer-kit/properties 的 PropertyDescriptor,path 相对元素;分组总是给出,显示条件写在 visibleWhen;required(显示时必须填写)不用,空值由打印自己的规则报告。
PropertyGroup类型属性面板分组:元素与表格部位用布局、内容、数据、文字、表格、条码、外观、行为,页面设置用页面、纸张、页眉页脚、页码、水印。
PropertyUnit类型数值属性的单位:mm、pt、角度、倍数或个数。
SidesControl类型四边距离:designer-kit 的 sides 编辑方式,单位取打印的单位。

schema/common ​

名称种类说明
BorderSides接口四边边框,缺省的一边不画线。
BoxStyle接口元素外框样式。
Color类型颜色:#RGB、#RGBA、#RRGGBB、#RRGGBBAA 或 transparent。
Edges接口四边距离,单位 mm。
ExpressionFormat接口表达式格式:以受限表达式把值转成显示文本,表达式中以 value 引用待格式化的值。
ExpressionTextContent接口以受限表达式计算的文本,表达式中的变量为数据对象的顶层字段。
FieldImageSource接口从数据字段读取图片地址。
FieldTextContent接口绑定单个数据字段。
ImageSource类型图片来源。
MapFormat接口值映射格式:按数据值查表显示文本。
StaticImageSource接口固定地址的图片。
StaticTextContent接口固定文本。
Stroke接口描边。
TemplateTextContent接口含 {{path}} 占位的文本模板,占位按数据字段替换。
TextContent类型文本内容来源。
TextStyle接口文本样式。
ValueFormat类型值格式:数字、百分比、日期与人民币大写即 @xihan-ui/expression 的 FormatSpec,交给注入的格式化器;值映射在本包内完成,表达式格式经表达式接入点。
ValueMapEntry接口值映射的一项:数据值(按字符串比较)与显示文本,与选择类组件的选项同一形状(不带 disabled)。

schema/document ​

名称种类说明
PageBand接口页眉或页脚的一个带区。
PageBandSet接口页眉或页脚:default 为常规带区,其余为按输出页命中的变体。
PageGuides接口参考线:设计时对位用,不参与分页也不打印;坐标相对纸张左上角(按页面方向换算后的纸张),单位 mm。
PageNumbering接口页码编号规则。
PaperSpec接口纸张。
PRINT_SCHEMA_VERSION常量当前模板 schema 版本。
PrintDocument接口打印模板文档。
PrintPage接口页面模板:一份页面模板按数据量排出一张或多张输出页。
PrintSchemaVersion类型模板 schema 版本号类型。
Watermark接口平铺文字水印。

schema/elements ​

名称种类说明
BarCodeElement接口一维条码。
BarCodeTextStyle接口条码下方文字的样式。
ElementBase接口全部元素共有的字段。
EllipseElement接口椭圆,内切于元素框。
ExtensionElement接口扩展登记的元素:通用字段之外的属性由扩展的原型定义,取值都是 JSON。
ImageElement接口图片。
LineElement接口直线,走向由元素框和方向共同决定。
LongTextElement接口随内容纵向延展并可跨页续排的长文本。
MatrixCodeElement接口二维码:QR、Data Matrix、PDF417、Aztec。
PageNumberElement接口页码。
PRINT_ELEMENT_TYPES常量内置元素类型列表。
PrintElement类型内置元素。
PrintElementOf类型按类型取元素接口。
PrintElementType类型内置元素类型。
RectElement接口矩形。
RichTextContent类型富文本的内容来源:模板里写死的文档,或从数据字段读取。
RichTextElement接口随内容纵向延展并可跨页续排的富文本:段落、标题、列表、分隔线与带样式的文字。
TableElement接口绑定数组数据、随行数延展并可跨页续排的表格。
TextElement接口固定尺寸的文本。

schema/options ​

名称种类说明
AGGREGATE_FUNCTIONS常量表格汇总函数取值。
AGGREGATE_SCOPES常量表格汇总范围取值。
AggregateFunction类型表格汇总函数。
AggregateScope类型表格汇总范围:page 本页数据,cumulative 截至本页的累计数据,all 全部数据。
BarCodeFormat类型转导出自 @xihan-ui/headless
HORIZONTAL_ALIGNS常量单元格水平对齐取值。
HorizontalAlign类型单元格水平对齐。
IMAGE_FITS常量图片适配方式取值。
ImageFit类型图片在元素框内的适配方式。
LINE_DIRECTIONS常量直线方向取值。
LineDirection类型直线在元素框内的走向:horizontal 沿垂直中线,vertical 沿水平中线,diagonalDown 左上到右下,diagonalUp 左下到右上。
MatrixCodeFormat类型转导出自 @xihan-ui/headless
MatrixCodeLevel类型转导出自 @xihan-ui/headless
PAGE_BAND_VARIANTS常量页眉页脚的页面变体键。
PAGE_ORIENTATIONS常量页面方向取值。
PageBandKey类型页眉页脚的全部带区键,default 为未命中任何变体时使用的带区。
PageBandVariant类型页眉页脚变体:first 首页、last 末页、odd 奇数页、even 偶数页(按页码奇偶)。
PageOrientation类型页面方向:portrait 纵向,landscape 横向(宽高互换)。
RICH_TEXT_SOURCES常量富文本字段的内容格式取值。
RichTextSource类型富文本字段的内容格式:html 为 HTML 串,按白名单换成文档;document 为富文本文档对象。
SINGLE_SHEET_PREFERENCES常量同一输出页既是首页又是末页时优先采用的变体取值。
SingleSheetPreference类型同一输出页既是首页又是末页时优先采用的变体。
STROKE_STYLES常量线型取值。
StrokeStyle类型线型。
TABLE_CELL_TYPES常量表格列单元格的呈现类型取值。
TABLE_FOOTER_PLACEMENTS常量表尾行出现位置取值。
TABLE_ROW_HEIGHT_MODES常量表体行高模式取值。
TableCellType类型表格列单元格的呈现类型。
TableFooterPlacement类型表尾行出现位置:everyPage 表格所跨的每一页,lastPage 仅表格结束的那一页。
TableRowHeightMode类型表体行高模式:fixed 每行固定为设定的行高,minimum 以设定的行高为下限、按单元格内容撑高。
TEXT_ALIGNS常量文本水平对齐取值。
TEXT_OVERFLOWS常量固定尺寸文本的溢出处理取值。
TextAlign类型文本水平对齐。
TextOverflow类型固定尺寸文本的溢出处理:clip 裁切,shrink 缩小字号以容纳,visible 允许溢出显示。
VERTICAL_ALIGNS常量垂直对齐取值。
VerticalAlign类型垂直对齐。

schema/table ​

名称种类说明
AggregateCellContent接口表尾单元格的汇总内容。
CellStyle接口单元格样式。
TableBody接口表体。
TableBorder接口表格网格线。
TableCellContent类型表体单元格内容来源。
TableColumn接口表格列。
TableExpressionCellContent接口表体单元格以受限表达式计算,表达式中的变量为行对象的顶层字段。
TableFieldCellContent接口表体单元格显示行内字段。
TableFooterCell接口表尾单元格。
TableFooterCellContent类型表尾单元格内容:固定文本、根数据字段、根数据模板或汇总值。
TableFooterRow接口表尾行,可承载固定文字、根数据字段与汇总值。
TableHeader接口表头。
TableRowNumberCellContent接口表体单元格显示从 1 开始、跨页连续的行序号。
TableTemplateCellContent接口表体单元格按行对象替换 {{path}} 占位。

traverse ​

名称种类说明
ElementContainerRef类型元素容器:页面正文,或页眉、页脚中的某个带区。
ElementLocation接口元素在文档中的位置。
ElementRegion类型元素所在区域:正文、页眉或页脚。
findElement函数按标识查找元素。
findPage函数按标识查找页面及其下标。
forEachElement函数按页面、正文、页眉、页脚的顺序遍历全部元素。
getContainerElements函数取容器的元素数组;页面或带区不存在时返回 undefined。
getContainerPath函数取容器元素数组相对页面的 JSON 路径。
listContainers函数列出页面上的全部容器,按正文、页眉、页脚的顺序。
listPageBandKeys函数列出页眉或页脚中已存在的带区键。
PAGE_BAND_KEYS常量页眉页脚带区键,按 default、first、last、odd、even 的顺序。

validation/checks ​

名称种类说明
isValidColor函数判断颜色是否为 transparent 或以 # 开头的 3、4、6、8 位十六进制色,判据即 designer-kit 的 color 编辑方式。

validation/issues ​

名称种类说明
ExtensionIssueCode类型扩展自己的问题码:扩展 id 的末段加点开头,如 seal.noImage;没有登记严重程度,缺省按 error。
IssueParams类型问题参数,供各语言文案插值。
VALIDATION_ISSUE_SEVERITIES常量全部问题码及其固定的严重程度:不带前缀的是 @xihan-ui/designer-kit/schema 的通用问题码,带前缀的是打印专属的问题码。
ValidationIssue类型校验问题:@xihan-ui/designer-kit/schema 的 SchemaIssue,严重程度总是给出。
ValidationIssueCode类型问题码。
ValidationReport接口校验报告。

validation/validate ​

名称种类说明
validateDocument函数校验模板文档:先检查 JSON 纯度,再按 schema、属性描述与元素专属规则逐层校验。
ValidateDocumentOptions接口校验选项。

Released under The MIT License