接到几百张学生证的订单,每张姓名、学号、班级、照片都不一样,一张张改再一张张存 PDF,得花上好几个小时。小编先给结论:Adobe Illustrator 自带“变量”和“数据组”功能,可以把设计稿和 Excel 导出的 CSV 数据库连起来,自动替换文字和照片;再配合一个 JSX 脚本,就能把每个数据组分别导出为独立的 PDF,不用录制动作。下面按步骤讲清楚,并列出最容易踩的坑。
顺带说一句,同类的证件批量制作,用 CorelDRAW 可以走宏,用 InDesign 可以走数据合并(Data Merge),用 Photoshop 同样支持变量和数据组。Illustrator 的优势在于保留矢量设计和精确控制,适合生成个性化 PDF。
第 1 步:弄懂 Illustrator 的变量与数据组
“变量”让文档里选定的对象,根据外部数据源改变内容。学生证上,校名、徽标、学年、装饰图形、背景色、校长签名每张都一样;姓名、父亲姓名、学号、班级、手机号、地址和照片则每人不同。数据库里每一行对应一个数据组:有 100 条学生记录,就会生成 100 个数据组,切换数据组,设计里的信息和照片就自动变化。这套方法也适用于会员卡、访客证、员工证等个性化印刷。
第 2 步:做好学生证模板
- 打开 文件 > 新建,按卡片尺寸建文档。常见 PVC 卡尺寸是 85.6 mm × 54 mm,竖版就把宽高对调。
- 要交给专业印刷的话,选 CMYK 颜色模式。
- 印刷需要出血的话,在新建文档里设置出血值,比如四边各 3 mm(以印厂要求为准)。背景必须延伸进出血区,裁切后才不会露白边。
- 变化的信息要做成各自独立、可编辑的文字对象:姓名一个、父亲姓名一个、学号一个。不要把这些变量文字转曲,因为 Illustrator 需要可编辑文字才能替换内容。
- 文字框要留足空间:“Aman”能放下,“Harsh Vardhan Sharma”就可能放不下。
照片区域:用 文件 > 置入 放一张示例照片,保证是链接方式置入,调整大小和位置,需要的话加剪切蒙版来保持统一的相框。导入前,把所有学生照片处理成相近的尺寸和宽高比;Illustrator 的变量替换图片不会自动保证每张都构图完美,要仔细检查替换后的图片和剪切蒙版。
第 3 步:在 Excel 里准备学生数据库
新建工作表,第一行写列标题,之后每行是一个学生:
| Name | F_Name | Roll_no | Class | @Photo | Mob_no | Address |
|---|---|---|---|---|---|---|
| Harsh Vardhan | Arvind Gupta | 1024 | 12-B | D:\CardPhotos\01.jpg | 99999999133 | H.No. 58, Ashok Vihar |
| Priya Sharma | Rajesh Sharma | 1025 | 11-A | D:\CardPhotos\02.jpg | 99999999134 | Laxmi Nagar, Delhi |
| Aman Kumar | Ravi Kumar | 1026 | 10-C | D:\CardPhotos\03.jpg | 99999999135 | Badarpur, Delhi |
第一行是变量名,不是学生信息。变量名(表头)里不能有空格,这是最常见的错误:写成“Father Name”,Illustrator 可能直接拒绝这份 CSV。
| 错误写法 | 正确写法 |
|---|---|
| Father Name | Father_Name |
| Roll Number | Roll_Number |
| Student Name | Student_Name |
| Mobile Number | Mobile_Number |
| Student Photo | @Student_Photo |
| Home Address | Home_Address |
用 FatherName、RollNo 这样不带下划线的写法也行,关键是一致、没有空格。这条规则只针对第一行表头,学生的实际信息可以正常带空格,别去掉。
第 4 步:解决 Excel 里的 @ 符号问题
Illustrator 用表头里的特殊字符识别变量类型。@Photo 开头的 @ 告诉它:这一列是图片文件的引用,而不是普通文字,所以照片列的表头必须以 @ 开头。但 Excel 的公式系统也用 @,在部分版本或情形下,直接输入 @Photo 会被当成公式或表达式,甚至报错。有两个办法:
- 办法一:前面加英文单引号。输入
'@Photo。单引号让 Excel 把它当纯文本,单元格里显示的仍是 @Photo,正确导出 CSV 后表头也应是 @Photo,不带单引号。Adobe 文档对把 @ 当特殊字符的表格软件,推荐的就是这种方法。 - 办法二:先把单元格格式设成“文本”。右键单元格,选“设置单元格格式”,选“文本”,再输入 @Photo。如果单元格里已有公式,先清除再重新输入。
存成 CSV 后,务必用记事本或 Notepad++ 打开检查第一行,应该是:Name,F_Name,Roll_no,Class,@Photo,Mob_no,Address。如果看到 '@Photo 这种带单引号的,就是错的,需要手动改掉再保存。另外,@ 只用在表头;照片的文件名或路径前面不要加 @。
第 5 步:填写正确的照片路径
建一个存放所有学生照片的文件夹,比如 D:\CardPhotos,用统一的文件名,如 001.jpg、002.jpg,每张照片文件名唯一。在 Excel 的照片列填完整路径,比如 D:\CardPhotos\01.jpg。务必确认文件真的在那个位置;按 Adobe 的数据源准备建议,路径里尽量不要带空格;做完 CSV 后别移动或重命名照片文件夹,否则要同步更新路径,不然 Illustrator 可能替换失败或提示链接文件丢失。
小技巧:照片有几百张时,按学号或序号系统地命名,方便查出缺了谁的照片,也方便保持 Excel 记录和图片的对应关系。
第 6 步:另存为 CSV,并检查编码与格式
在 Excel 里选择 文件 > 另存为,保存类型选 CSV(逗号分隔),文件名比如 DTPTips_Students_Database.csv。Excel 提示部分工作簿功能无法保留,这是正常的,因为 CSV 是纯文本格式,不保留格式、公式和多个工作表,确认继续即可。
如果数据库里有印地语等 Unicode 文字,要特别注意编码:某些导出方式会把不支持的字符替换成问号或弄乱文字。可能需要使用 UTF-8 编码,并确认您的 Illustrator 版本能正确导入。用 Notepad++ 打开 CSV,看文字是否正常,别因为 Excel 保存成功就认为文件没问题。
导入前还要检查两点:含逗号的地址必须用英文双引号括起来(例如 "H.No. 58, Ashok Vihar, Delhi"),否则逗号会被当成字段分隔,把地址拆进别的列;同时确认分隔符是逗号,而不是不兼容的分号。
第 7 步:把 CSV 导入 Illustrator
- 回到 Illustrator,打开学生证设计稿。
- 打开 窗口 > 变量,出现“变量”面板。
- 在面板菜单里选择“导入”,找到并选中学生 CSV。
- 格式正确的话,面板里会出现 Name、F_Name、Roll_no、Class、Photo、Mob_no、Address 等变量;注意图片变量显示为 Photo(Illustrator 解析了特殊的 @Photo 表头)。
导入时,Illustrator 会逐行读取,为每一行创建一个数据组:50 个学生,面板里就有 50 个数据组;500 条记录也可以,只是实际性能取决于文档复杂度和您的电脑。到这一步变量只是导入了,还要和设计里的对象建立关联。
第 8 步:把变量和设计对象连起来

选中学生姓名文字对象,在变量面板点选变量 Name,用“使对象动态化”控件把两者关联;之后同样把父亲姓名对应 F_Name,学号对应 Roll_no,班级对应 Class,手机号对应 Mob_no,地址对应 Address。注意别选中“父亲姓名”“学号”“手机号”这类固定标签,只有装着实际学生信息的文字才应变化。
照片:选中链接的学生照片,在变量面板里选图片变量 Photo,同样使其动态化。之后切换数据组时,Illustrator 就会用数据库里的路径替换链接照片;如果用了剪切蒙版,记得确认替换后的照片在相框里显示正常。
第 9 步:先预览不同学生的卡片

在批量导出几百个文件之前,一定要先验证数据替换是否正确。变量面板顶部有“数据组”下拉菜单:选第一个数据组,应显示第一个学生的信息和照片;再选另一个,姓名、学号、班级、手机号、地址和照片应自动变化,而校徽、背景、学年等固定元素保持不变。多切换几条,尤其留意名字或地址很长的记录,必要时调整文字框或字号。同时确认每张照片都显示正常。前几条没问题后,把文档存成原生 .ai 格式,因为后面的批量导出脚本需要一个保存过的、包含已导入数据组的 Illustrator 文件。
第 10 步:为什么需要批量导出 PDF 的脚本
到这一步,您已有了数据驱动的学生证设计,可以在面板里任选一个数据组查看对应学生。但接下来要把所有学生证导出成单独的 PDF:500 个学生,手动逐个选数据组再另存,要重复几百次。Illustrator 的“动作”面板能自动化部分任务,但配置和管理动作对初学者并不方便。DTPTips 为此做了一个基于 JavaScript 的导出脚本 DTPTips ID Card Batch Exporter v2.0,通过简单界面完成:不需要录制动作,直接处理文档中已导入的数据组,依次切换并把每张学生证导出为独立 PDF。
第 11 步:脚本的功能一览
脚本是 JSX 文件(Illustrator 脚本系统支持的 JavaScript 格式),不需要安装额外软件。小编提醒:下载地址请以 DTPTips 官方发布渠道为准,运行前建议先在小批量上测试。

| 功能 | 说明 |
|---|---|
| 选择输出文件夹 | 浏览并指定所有 PDF 的保存位置,方便按项目归档。 |
| 导出全部数据组 | 500 条记录就处理全部 500 条。 |
| 导出指定范围 | 比如前 100 张已做完,只导出第 101 到 150 条(From: 101,To: 150)。 |
| 自定义文件名前缀 | 如 KTS_Student_,生成 KTS_Student_001.pdf 等;多所学校或多个项目时很实用。 |
| 自定义起始编号 | 输入 101,第一个导出的 PDF 就用这个编号。 |
| 编号位数 | 3 位得到 001、002;4 位得到 0001、0002,利于排序。 |
| 裁切标记 | 可添加 PDF 裁切标记,标出成品卡片的裁切位置;不需要就关闭。 |
| 出血设置 | 启用并以毫米为单位填值,比如文档设计了 3 mm 出血就填 3;要确保设计里的图形真的延伸到了出血区。 |
| 导出进度窗口 | 显示当前数据组和已完成的 PDF 数量。 |
| 停止导出 | 在两次 PDF 导出之间中断;已完成的文件会保留。Illustrator 正忙于保存某个 PDF 时,停止命令可能不会立即响应,请等当前保存完成。 |
第 12 步:在 Illustrator 里运行批量导出
- 先保存。用 文件 > 存储为 保存成
.ai文件,并确认导入的数据组都在。 - 启动脚本。选 文件 > 脚本 > 其他脚本,找到下载的
DTPTips_Illustrator_ID_Card_Exporter_v2.jsx并打开,导出界面就会出现。 - 选目标文件夹。点“浏览”,选择保存 PDF 的位置,比如
D:\CardExported_PDF;文件夹不存在要先建好。 - 先试几条。全部导出之前,建议先只导出前两三条:选自定义范围,From 填 1,To 填 3,核对结果后再处理整个数据库。
- 设置文件名。前缀填
KTS_ID_Card_,起始编号 1,位数 3,就会生成 KTS_ID_Card_001.pdf、002、003。起始编号只控制输出的文件名,不会改动 CSV 里的学号。 - 设置裁切标记与出血。专业印刷可以启用裁切标记和出血,比如出血 3 mm,要和印厂要求一致;不需要就不开。注意:脚本使用的是界面里填写的出血值,不会自动读取 Illustrator 文档设置里的出血;而且填出血值并不会凭空生成多出来的背景图形,这些图形必须已经存在于设计里。
- 点“Export PDF Cards”开始导出。脚本会逐条显示对应学生信息和照片并存成 PDF,进度窗口持续更新,想中断就点“Stop Export”。
据介绍,脚本会创建一个临时工作副本,帮助保护您的原始设计,也会检查已存在的文件名,避免意外覆盖之前生成的 PDF。
第 13 步:检查导出的 PDF
别把整批文件直接送去印刷。用 Adobe Acrobat 或其他 PDF 阅读器打开几个,检查学生信息有没有替换正确、照片和记录是否对得上,以及尺寸、裁切标记和出血。比如设计的是 85.6 × 54 mm 的卡片,即使带出血或印刷标记,最终裁切尺寸也该保持正确,只是整个 PDF 页面尺寸可能更大。最好在批次的开头、中间、结尾各看一张,大项目还要多检查名字长、地址多行或照片尺寸特殊的记录。脚本基于 Illustrator 的脚本功能,结果可能随 Illustrator 版本、文档结构和链接图片而异,所以小批量先测,再用于正式生产。
常见 CSV 导入报错与解决办法
| 现象 | 原因与解法 |
|---|---|
| 提示“传入的变量库无效” | 表头里有空格,如 Father Name。改成 Father_Name 或 FatherName。 |
| Excel 把 @Photo 当成表达式 | 用 ‘@Photo,或先把单元格格式设为“文本”;存成 CSV 后检查表头不带单引号。 |
| 学生照片缺失 | 路径错误、文件被移动或改名,或路径前误加了 @。核对每条路径对应的文件是否存在。 |
| 某些信息跑到错误的字段里 | 含逗号的地址没加双引号,被拆成多列。把整段地址用英文双引号括起来。 |
| 印地语显示为问号 | 编码问题。用 UTF-8 保存,并用 Notepad++ 核对。 |
| 脚本提示没有找到数据组 | 文档尚未保存为 .ai,或没有导入数据组。先保存并确认变量面板里有数据组。 |
| 脚本要求先保存文档 | 先把 Illustrator 文档存成 .ai 文件再运行脚本。 |
| 提示 PDF 文件已存在 | 目标文件夹里已有同名文件(如 ID_Card_001.pdf)。换前缀、改起始编号或换文件夹。 |
| 名字或地址太长被截断 | 预览时发现后,调整文字框大小或字号,再批量导出。 |
做出可直接印刷的学生证:几点建议
除了自动化,还要兼顾印刷质量:使用高质量的学生照片,保持一致的图像比例和可读的文字大小;重要信息远离裁切边;做 PVC 卡片时,要向印刷服务确认精确的裁切尺寸和圆角规格;全彩背景要延伸到出血区,防止裁切后出现白边;别把关键文字、徽标或照片放得太靠近卡片边缘;只在印厂需要时才启用裁切标记和出血。另外要记住,这个脚本导出的是单张 PDF,不会自动把多个不同学生的卡片拼到一张 A4 或 SRA3 印刷大版上,如需拼版,还要额外的拼版流程;这种场景用 InDesign 的数据合并往往更方便。
常见问题(FAQ)
Illustrator 能直接用 Excel 数据做学生证吗?
能,但要先把 Excel 另存为 CSV,由 Illustrator 的变量面板导入,用来替换文字和链接照片;这个流程不直接使用 XLSX 文件。
怎么自动导入学生照片?
用类似 @Photo 的表头做照片列,并给每个学生填有效的图片文件路径。
为什么表头写“Father Name”会被 Illustrator 拒绝?
Illustrator 要求变量名不带空格,请改用 Father_Name 或 FatherName。
可以只导出部分学生记录吗?
可以,脚本提供导出指定范围数据组的选项,比如只导出第 101 到 150 条。
导出的 PDF 能带裁切标记和出血吗?
可以,脚本提供 PDF 裁切标记和自定义出血值选项,但背景图形要自己延伸到出血区。
运行脚本前需要先录制动作吗?
不需要,脚本直接处理变量里的数据组,不用录制任何动作。
一张 A4 上能排多张不同学生的卡片吗?
这个脚本不行,2.0 版导出的是单个 PDF,拼版需要另走拼版流程,或改用 InDesign 数据合并。
小编的总结:整个流程里最关键的是数据库准备:表头没有空格,照片列正确加 @,导入前核对 CSV 格式、图片路径和文字编码。变量连好、数据组能正常切换之后,批量导出就水到渠成。先用两三条记录试导,再放心跑整批。
