Skip to content

renderIdCard

使用 Canvas 渲染中国居民身份证的正反面(简化版,仅用于演示/测试)。

函数签名

typescript
function renderIdCard(
  input: RenderIdCardInput,
  deps: RenderIdCardDeps
): { front: any; back: any }

interface RenderIdCardInput {
  idCard: string
  name?: string
  gender?: '男' | '女'
  nation?: string
  birth?: string // YYYY-MM-DD,未传则从 idCard 提取
  address?: string
  issueAuthority?: string
  validPeriod?: string // 例如:2010.01.01-2030.01.01
  avatarImage?: any // 头像图(HTMLImageElement/ImageBitmap/Canvas 等)
}

interface RenderIdCardDeps {
  createCanvas: (width: number, height: number) => { getContext: (type: '2d') => CanvasRenderingContext2D }
}

参数

参数名类型必填说明
inputRenderIdCardInput渲染所需的信息(姓名、性别、身份证号等)
depsRenderIdCardDeps环境依赖,提供 createCanvas 方法

返回值

类型说明
{ front, back }两张 Canvas,分别为身份证正面与反面

工作原理

  1. 通过 deps.createCanvas 创建画布,绘制统一留白和卡面背景
  2. 正面:绘制姓名/性别/民族/出生/地址/身份证号,并支持圆形头像裁剪
  3. 反面:绘制签发机关与有效期限(简化风格)
  4. 返回 { front, back } 便于导出图片或展示

说明:此实现仅为演示用途,非真实制式版式与字体布局。