Appearance
BizPoster 分享海报
模板化 canvas 海报合成:品牌条 / 主图(cover 裁剪,缺省渐变占位)/ 标题副标题 / 简介(自动缩排,行数按剩余高度自适应、至多 3 行裁断)/ 头像昵称 / 二维码复用 BizCode(支持中心 logo)。scale 倍率高清导出 PNG、剪贴板复制、批量生成(循环出图)、templateRequest 远程模板配置。与 BizSharePanel(链接 + 二维码卡片展示)互补,本组件产出可下载 / 可发送的图片物料。
基础合成
1080 × 1080 · 2x 高清导出
默认 square 1080×1080 模板,2x 导出;预览随 data 变化实时重绘(200ms 防抖)。
主题与背景
分销邀请海报
750 × 1334 · 2x 高清导出
多尺寸预设
高清导出
1x=1080px 宽;2x=2160px;3x=3240px
复制到剪贴板
主图注入与占位
注入主图
长文案自动缩排
批量生成
生成结果为 dataURL,可直接上传 OSS 或写入下载队列
远程模板配置
组件以本地 props 渲染,templateRequest 返回后按「远程优先」合并重绘;请求失败静默回退本地配置。
Props
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| template | 'square' | 'portrait' | 'story' | 'square' | 尺寸模板(1080² / 750×1334 / 1080×1920) |
| data | BizPosterData | { title: '海报标题' } | 内容槽位(image / title / subtitle / desc / avatar / name / qrcodeValue / hint) |
| theme | BizPosterTheme | {} | 主题配色(bg / accent / text / muted,缺省取默认主题) |
| background | 'plain' | 'gradient' | 'plain' | 背景模式(gradient 自 accent 向 bg 过渡) |
| brand | string | '' | 顶部品牌名(accent 色条 + 小字) |
| qrcode-logo | string | '' | 二维码中心 logo(透传 BizCode logo 通道) |
| scale | number | 2 | 导出倍率(2 = 2 倍分辨率) |
| filename | string | 'poster.png' | 下载文件名 |
| show-toolbar | boolean | false | 内置下载 / 复制操作条 |
| template-request | () => Promise<BizPosterTemplateConfig> | — | 远程模板配置(挂载后合并,远程优先) |
Expose
| 属性/方法 | 说明 |
|---|---|
| to-data-url | () => Promise<string> 当前海报 PNG dataURL |
| download | (filename?: string) => Promise<void> 下载 PNG |
| copy | () => Promise<void> 复制到剪贴板(ClipboardItem,不支持时提示) |
| generate | (list: BizPosterData[]) => Promise<string[]> 批量逐条合成(结束后恢复当前数据) |
| refresh | () => Promise<void> 强制重绘 |
口径说明
- 主图降级:图片加载失败或跨域污染画布(toDataURL 抛错)时自动降级为渐变占位重绘一次,保证导出可用;污染源在组件生命周期内不再重试。
- 缩排规则:标题 / 副标题自基准字号逐级 −2px 至单行容纳(下限 36 / 26px);简介固定 28px、最多 3 行且行数按剩余高度自适应(内容过满时先行减行,保证不压底部分隔线 / 二维码卡 / 头像区),末行超宽截断加「…」;主题色支持 3 / 6 位 hex(3 位自动展开)。
- 二维码:内部挂载隐藏 BizCode(type='qr',size=200 白底),首次渲染就绪后进入画布;qrcodeValue 缺省时不渲染码位。
- 批量生成:为同步串行渲染(每张约一帧 + 合成耗时),结束后恢复 props.data 并重绘预览。