文章目录

开会、培训、接待——桌上的姓名台牌是刚需。手写太慢,Word 排版太丑,批量打印还要一个个复制粘贴。台牌生成器把这件事变成 3 秒搞定:输入姓名 → 生成 A4 页面 → 直接打印,帐篷式折叠即用。

2
生成模式
20×10
台牌尺寸 (cm)
∞
批量上限
0
依赖安装

一、核心问题:台牌打印为什么麻烦?

传统做法是用 Word 或 PPT 手动排版,一个个输入姓名、调整字号、对齐位置。10 个人的会议还好,100 人的培训就崩溃了——重复劳动、格式不统一、换个人名字就要重新排版。

传统台牌制作流程 — 痛苦循环
📋
拿到名单
Excel / 纸质
→
📝
打开 Word
手动排版
→
😤
调字号间距
反复试错
→
🖨️
逐个打印
效率极低
→
🔄
名字改了
重来一遍
⚠️ 痛点:100 人的培训名单,手动排版至少 2 小时;字号间距全靠感觉,每个台牌看起来都不一样;临时加人或改名,又要重新来过。

二、台牌生成器:一个 HTML 搞定一切

纯前端实现,零依赖安装(仅引入 XLSX.js 用于 Excel 解析)。打开 HTML → 输入姓名或上传 Excel → 生成 → 打印。整个流程不超过 10 秒。

台牌生成器工作流程
✏️
单个生成
手动输入姓名
📋
批量生成
上传 Excel 文件
⚙️
样式配置
字体 · 字号 · 字间距
📄
A4 页面生成
20cm × 10cm 台牌
🖨️
直接打印
无边距打印
🎯 核心理念:一个 HTML 文件,打开即用,无需安装任何软件。支持单个和批量两种模式,字体字号字间距全部可调,生成后还能在线编辑微调。

三、技术实现

🌐
HTML5
单文件
🎨
CSS3
Print Media Query
⚡
Vanilla JS
零框架依赖
📊
XLSX.js
0.18.5
📐
SVG
台牌边框绘制
🖨️
CSS Print
@page A4

四、功能模块详解

4.1 单个生成 — 输入即出

最简单的使用场景:输入一个姓名,点击生成,直接得到一张可打印的 A4 台牌页面。支持自定义字体、字号和字间距。

单个生成 — 配置面板
🔤
字体选择
支持楷体、宋体、黑体等 20+ 字体,也可手动输入系统已安装的任意字体名
📏
字号调节
20pt ~ 200pt 自由调节,默认 120pt,大字更醒目
↔️
字间距控制
每个字之间插入的空格数(0~10),让姓名在台牌上更均匀分布

4.2 批量生成 — Excel 一键导入

上传 Excel 文件(.xlsx / .xls / .csv),自动识别工作表和列头,选择姓名所在列,一键生成所有台牌。这是最常用的场景——HR 给你一份名单,3 秒出一摞台牌。

批量生成流程
📁
上传 Excel
拖拽或点击
→
📋
选择工作表
自动识别
→
📊
选择姓名列
点击列头
→
⚙️
调整样式
字体 · 字号
→
🖨️
批量生成
一键打印
💡 智能字间距:批量模式支持按字数分别设置间距——2 字名用 3 格间距、3 字名用 1 格间距、4 字名用 0 格间距,让不同长度的名字在台牌上都显得对称美观。

4.3 打印输出 — A4 帐篷式设计

每张 A4 页面(210mm × 297mm)包含一个台牌的正反两面。沿中线对折后形成帐篷式台牌,两面都能看到姓名。页面用 SVG 绘制裁切线,打印时选择"无边距"即可。

A4 页面布局示意
A4 · 210mm × 297mm 张 三 正面(朝上) ← 折叠线 → 张 三 背面(倒置)

沿红色虚线对折 → 帐篷式台牌,正反两面均可阅读

4.4 在线编辑 — 打印前微调

生成后的台牌支持 contenteditable 在线编辑。如果发现某个名字需要微调(比如加空格、改字),直接点击台牌上的文字就能修改,无需重新生成。

在线编辑特性

🖱️ 点击即编辑

台牌上的姓名区域使用 contenteditable,点击即可修改文字,所见即所得。

🔒 打印时锁定

通过 CSS @media print 将编辑区域设为只读,防止打印时误操作。

↩️ 返回修改

打印预览页面可随时返回设置面板,调整字体、字号或重新选择数据。

五、样式配置详解

台牌生成器提供了丰富的样式配置项,让你的台牌既好看又专业。

配置项 默认值 范围 说明
🔤 字体 楷体 系统任意字体 下拉选择或手动输入,支持 20+ 预置字体
📏 字号 120pt 20 ~ 200pt 越大越醒目,建议 80~150pt
↔️ 2字间距 3 格 0 ~ 10 两个字的名字,字间插入 3 个空格
↔️ 3字间距 1 格 0 ~ 10 三个字的名字,字间插入 1 个空格
↔️ 4字间距 0 格 0 ~ 10 四个字的名字,不需要额外间距
💡 设计思路:不同字数的名字需要不同的间距才能看起来对称。2 字名太紧凑需要拉开,4 字名本身就够宽就不加间距。这个智能间距设计让每个台牌都美观统一。

六、核心代码解析

6.1 姓名格式化 — 智能加空格

根据姓名字数自动应用不同的字间距,让台牌上的文字均匀分布:

function formatName(name, s2, s3, s4) {
  name = name.trim();
  if (name.length <= 1) return name;
  // 根据字数选择对应间距
  const sp = ({2:s2, 3:s3})[name.length] ?? s4;
  // 每个字之间插入指定数量的空格
  return name.split('').join(' '.repeat(sp));
}

// 示例:
formatName('张三', 3, 1, 0);  // → "张   三"
formatName('张三丰', 3, 1, 0); // → "张 三 丰"
formatName('欧阳修', 3, 1, 0); // → "欧阳修"

6.2 A4 页面生成 — SVG + HTML 混合

每张 A4 页面用 SVG 绘制裁切边框,用 HTML contenteditable 实现可编辑文字:

function makeCardPage(nameHtml, fontFamily, fontSize) {
  const div = document.createElement('div');
  div.className = 'page';  // 210mm × 297mm
  div.innerHTML = `
    <svg viewBox="0 0 210 297">
      <line x1="5" y1="48.5" x2="205" y2="48.5"/>   <!-- 上边框 -->
      <line x1="5" y1="248.5" x2="205" y2="248.5"/>  <!-- 下边框 -->
    </svg>
    <div class="edit-overlay">
      <div class="editable front" contenteditable="true">
        ${nameHtml}    <!-- 正面姓名 -->
      </div>
      <div class="editable back" contenteditable="true">
        ${nameHtml}    <!-- 背面姓名(倒置) -->
      </div>
    </div>`;
  return div;
}

6.3 Excel 解析 — XLSX.js 驱动

使用 XLSX.js 库解析上传的 Excel 文件,支持 .xlsx、.xls、.csv 三种格式:

function handleFile(file) {
  const reader = new FileReader();
  reader.onload = e => {
    // 解析 Excel 工作簿
    workbook = XLSX.read(e.target.result, {type:'array'});
    // 填充工作表下拉列表
    sheetDropdown.innerHTML = workbook.SheetNames
      .map((n,i) => `<option value="${i}">${n}</option>`).join('');
    loadSheet(0);
  };
  reader.readAsArrayBuffer(file);
}

function loadSheet(idx) {
  // 将工作表转为二维数组
  currentSheet = XLSX.utils.sheet_to_json(
    workbook.Sheets[workbook.SheetNames[idx]],
    {header: 1}
  );
  renderColumns();  // 渲染列选择器
}

6.4 打印优化 — CSS @media print

通过 CSS 媒体查询,在打印时隐藏工具栏、锁定编辑区域、设置 A4 页面尺寸:

@media print {
  @page { size: A4; margin: 0; }
  /* 隐藏所有非打印元素 */
  .mode-panel, .panel, .toolbar { display: none !important; }
  /* 显示打印区域 */
  .print-area { display: block !important; }
  /* 锁定编辑区域,防止误操作 */
  .editable {
    -webkit-user-modify: read-only !important;
    caret-color: transparent !important;
    cursor: default !important;
  }
  /* 每张页面自动分页 */
  .page { page-break-after: always; }
  .page:last-child { page-break-after: auto; }
}

七、使用指南

单个生成

  1. 打开 HTML 文件,点击「单个生成」
  2. 在样式设置中选择字体、字号、字间距
  3. 输入姓名,点击「生成台牌」
  4. 在预览页面检查效果,可直接点击文字修改
  5. 点击「🖨️ 打印」,选择"无边距"打印
  6. 沿中线对折,帐篷式台牌完成 ✅

批量生成

  1. 点击「批量生成」,上传 Excel 文件
  2. 选择工作表(如有多个)
  3. 点击姓名所在列的列头
  4. 预览前 10 个名字,确认无误
  5. 调整字体和字间距(可按字数分别设置)
  6. 点击「批量生成台牌」
  7. 在打印页面逐页检查,或直接打印全部
⚠️ 打印提示:打印时务必选择「无边距」或「边距:无」,否则台牌内容可能被裁切。建议先用 1-2 张测试纸试打,确认尺寸无误后再批量打印。

八、应用场景

🏢 会议桌牌

部门会议、项目评审、客户来访——提前 5 分钟准备,再也不用手写。

🎓 培训签到

新员工培训、技能课程,Excel 名单一键生成,到场即坐。

🎪 活动席位

论坛、年会、颁奖典礼,嘉宾姓名台牌批量搞定,专业感拉满。

🏫 教室座位

考试座位号、家长会席位,打印+折叠,3 分钟搞定全班。

九、设计总结

🎯 一句话总结:帐篷式台牌生成器让「名单 → 台牌 → 打印」变成 10 秒钟的事。打开 HTML,输入姓名或上传 Excel,生成、打印、折叠——搞定。

评 论