@worm-vue3-print/canvas 1.0.1 → 1.2.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/dist/types.d.ts CHANGED
@@ -40,6 +40,8 @@ export interface TemplateData {
40
40
  customWidth?: number;
41
41
  /** 自定义纸张高度(mm),仅 paperSize='CUSTOM' 时有效 */
42
42
  customHeight?: number;
43
+ /** 页面(纸张)背景色;未设置时默认白色 */
44
+ pageBackground?: string;
43
45
  /** 水印配置 */
44
46
  watermark?: WatermarkOptions;
45
47
  /** 手动参考线(设计态辅助,序列化保留,渲染端忽略) */
@@ -93,7 +95,7 @@ export interface TableCellBorders {
93
95
  left?: TableCellBorder;
94
96
  }
95
97
  /** 单元格内容类型 */
96
- export type TableCellType = 'text' | 'barcode' | 'qrcode';
98
+ export type TableCellType = 'text' | 'barcode' | 'qrcode' | 'image';
97
99
  /** 单元格 */
98
100
  export interface TableCell {
99
101
  id: string;
@@ -115,6 +117,9 @@ export interface TableCell {
115
117
  borders?: TableCellBorders;
116
118
  padding?: number;
117
119
  wordWrap?: boolean;
120
+ fit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
121
+ maxWidth?: number;
122
+ maxHeight?: number;
118
123
  }
119
124
  /** 表格行 */
120
125
  export interface TableRow {
@@ -1,7 +1,29 @@
1
+ /** 视口固定尺条厚度(px),CanvasArea 布局与左上角块共用 */
2
+ export declare const RULER_THICKNESS = 22;
1
3
  export interface RulerTick {
4
+ /** 刻度在纸面坐标系上的位置(mm,可为负,表示纸张原点之外) */
2
5
  mm: number;
6
+ /** 是否为主刻度(带数字标签) */
3
7
  major: boolean;
4
8
  label?: string;
5
9
  }
6
- /** 生成标尺刻度:5mm 小刻度,10mm 大刻度 + 数字标签 */
7
- export declare function buildRulerTicks(lengthMM: number): RulerTick[];
10
+ /**
11
+ * 按缩放选择主刻度步长(mm):取漂亮数序列中使屏幕间距
12
+ * 不小于 targetPx 的最小步长,保证任意缩放下标签不重叠
13
+ * @param scale 画布缩放比例(1 = 100%)
14
+ * @param targetPx 主刻度之间的目标屏幕间距(px)
15
+ */
16
+ export declare function chooseMajorStepMM(scale: number, targetPx?: number): number;
17
+ /**
18
+ * 次刻度步长:5 系(5/50/500…)五等分、2 系(2/20/200…)二等分、
19
+ * 10 的幂从 10mm 起五等分(10→2mm、100→20mm),1mm 时无次刻度
20
+ */
21
+ export declare function minorStepMM(majorStepMM: number): number | null;
22
+ /**
23
+ * 生成可见毫米范围内的全部刻度(升序):
24
+ * 从首个对齐的次刻度开始,主刻度带数字标签
25
+ * @param startMM 可见范围起点(纸面坐标,可为负)
26
+ * @param endMM 可见范围终点
27
+ * @param majorStepMM 主刻度步长(由 chooseMajorStepMM 选出)
28
+ */
29
+ export declare function buildRulerTicks(startMM: number, endMM: number, majorStepMM: number): RulerTick[];
@@ -1,2 +1,13 @@
1
- /** 计算适应窗口的缩放百分比,clamp 到 [50,200] */
1
+ /** 最小缩放百分比,低于此值画布难以查看与操作;放大方向不设上限 */
2
+ export declare const MIN_SCALE_PERCENT = 25;
3
+ /** 将缩放百分比钳制到允许范围:仅保留下限,放大不设上限 */
4
+ export declare function clampScalePercent(percent: number): number;
5
+ /**
6
+ * 滚轮缩放:乘性步进(默认 ×1.1 / ÷1.1),大倍数下仍保持平滑手感,
7
+ * 返回取整后的百分比,避免浮点累加产生脏显示(如 110.00000001)
8
+ * @param percent 当前缩放百分比
9
+ * @param direction 1 放大,-1 缩小
10
+ */
11
+ export declare function nextWheelScale(percent: number, direction: 1 | -1, factor?: number): number;
12
+ /** 计算适应窗口的缩放百分比,仅钳制最小缩放,放大不设上限 */
2
13
  export declare function computeFitScale(containerW: number, containerH: number, paperW: number, paperH: number, ratio?: number): number;
@@ -59,3 +59,11 @@ export declare function resolveCellBorderCss(b: TableCellBorder | undefined, opt
59
59
  }): string;
60
60
  /** 表格元素尺寸派生:options.width/height 恒等于列宽和/行高和(mm),与渲染端一致 */
61
61
  export declare function syncTableElementSize(options: ElementOptions): void;
62
+ /** 列宽拖拽的最小列宽(mm),与属性面板列宽输入下限一致 */
63
+ export declare const MIN_COL_WIDTH_MM = 5;
64
+ /**
65
+ * 列宽拖拽钳制(纯函数,不修改入参,调用方负责回写):
66
+ * 返回目标列宽在 [MIN_COL_WIDTH_MM, maxTableWidth - 其余列和] 范围内的钳制值,
67
+ * 结果保留 0.1mm 精度。maxTableWidth 为 Infinity 时不设总宽上限。
68
+ */
69
+ export declare function clampResizedColumnWidth(colWidths: number[], index: number, targetMm: number, maxTableWidth: number): number;
@@ -2,3 +2,5 @@
2
2
  export declare function ptToMm(pt: number): number;
3
3
  /** px 转 mm(基于 96dpi 屏幕) */
4
4
  export declare function pxToMm(px: number): number;
5
+ /** mm 转 px(基于 96dpi 屏幕) */
6
+ export declare function mmToPx(mm: number): number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@worm-vue3-print/canvas",
3
- "version": "1.0.1",
3
+ "version": "1.2.0",
4
4
  "type": "module",
5
5
  "description": "Vue 3 可视化打印模板设计器画布(开源核心,无 Element Plus、无宿主业务依赖)",
6
6
  "main": "./dist/index.cjs",