Illustrator 批量制作学生证:CSV 数据加照片一键导出 PDF

用 Illustrator 变量与数据组配合 Excel 导出的 CSV,批量替换姓名和照片,再用 JSX 脚本导出几百张学生证 PDF,附 @Photo、空格表头等常见报错解法。

接到几百张学生证的订单,每张姓名、学号、班级、照片都不一样,一张张改再一张张存 PDF,得花上好几个小时。小编先给结论:Adobe Illustrator 自带“变量”和“数据组”功能,可以把设计稿和 Excel 导出的 CSV 数据库连起来,自动替换文字和照片;再配合一个 JSX 脚本,就能把每个数据组分别导出为独立的 PDF,不用录制动作。下面按步骤讲清楚,并列出最容易踩的坑。

顺带说一句,同类的证件批量制作,用 CorelDRAW 可以走宏,用 InDesign 可以走数据合并(Data Merge),用 Photoshop 同样支持变量和数据组。Illustrator 的优势在于保留矢量设计和精确控制,适合生成个性化 PDF。

第 1 步:弄懂 Illustrator 的变量与数据组

“变量”让文档里选定的对象,根据外部数据源改变内容。学生证上,校名、徽标、学年、装饰图形、背景色、校长签名每张都一样;姓名、父亲姓名、学号、班级、手机号、地址和照片则每人不同。数据库里每一行对应一个数据组:有 100 条学生记录,就会生成 100 个数据组,切换数据组,设计里的信息和照片就自动变化。这套方法也适用于会员卡、访客证、员工证等个性化印刷。

第 2 步:做好学生证模板

  1. 打开 文件 > 新建,按卡片尺寸建文档。常见 PVC 卡尺寸是 85.6 mm × 54 mm,竖版就把宽高对调。
  2. 要交给专业印刷的话,选 CMYK 颜色模式。
  3. 印刷需要出血的话,在新建文档里设置出血值,比如四边各 3 mm(以印厂要求为准)。背景必须延伸进出血区,裁切后才不会露白边。
  4. 变化的信息要做成各自独立、可编辑的文字对象:姓名一个、父亲姓名一个、学号一个。不要把这些变量文字转曲,因为 Illustrator 需要可编辑文字才能替换内容。
  5. 文字框要留足空间:“Aman”能放下,“Harsh Vardhan Sharma”就可能放不下。

照片区域:用 文件 > 置入 放一张示例照片,保证是链接方式置入,调整大小和位置,需要的话加剪切蒙版来保持统一的相框。导入前,把所有学生照片处理成相近的尺寸和宽高比;Illustrator 的变量替换图片不会自动保证每张都构图完美,要仔细检查替换后的图片和剪切蒙版。

第 3 步:在 Excel 里准备学生数据库

新建工作表,第一行写列标题,之后每行是一个学生:

NameF_NameRoll_noClass@PhotoMob_noAddress
Harsh VardhanArvind Gupta102412-BD:\CardPhotos\01.jpg99999999133H.No. 58, Ashok Vihar
Priya SharmaRajesh Sharma102511-AD:\CardPhotos\02.jpg99999999134Laxmi Nagar, Delhi
Aman KumarRavi Kumar102610-CD:\CardPhotos\03.jpg99999999135Badarpur, Delhi

第一行是变量名,不是学生信息。变量名(表头)里不能有空格,这是最常见的错误:写成“Father Name”,Illustrator 可能直接拒绝这份 CSV。

错误写法正确写法
Father NameFather_Name
Roll NumberRoll_Number
Student NameStudent_Name
Mobile NumberMobile_Number
Student Photo@Student_Photo
Home AddressHome_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

  1. 回到 Illustrator,打开学生证设计稿。
  2. 打开 窗口 > 变量,出现“变量”面板。
  3. 在面板菜单里选择“导入”,找到并选中学生 CSV。
  4. 格式正确的话,面板里会出现 Name、F_Name、Roll_no、Class、Photo、Mob_no、Address 等变量;注意图片变量显示为 Photo(Illustrator 解析了特殊的 @Photo 表头)。

导入时,Illustrator 会逐行读取,为每一行创建一个数据组:50 个学生,面板里就有 50 个数据组;500 条记录也可以,只是实际性能取决于文档复杂度和您的电脑。到这一步变量只是导入了,还要和设计里的对象建立关联。

第 8 步:把变量和设计对象连起来

Illustrator 变量面板与学生证设计关联

选中学生姓名文字对象,在变量面板点选变量 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 官方发布渠道为准,运行前建议先在小批量上测试。

DTPTips ID Card Batch Exporter v2.0 界面

功能说明
选择输出文件夹浏览并指定所有 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 里运行批量导出

  1. 先保存。用 文件 > 存储为 保存成 .ai 文件,并确认导入的数据组都在。
  2. 启动脚本。选 文件 > 脚本 > 其他脚本,找到下载的 DTPTips_Illustrator_ID_Card_Exporter_v2.jsx 并打开,导出界面就会出现。
  3. 选目标文件夹。点“浏览”,选择保存 PDF 的位置,比如 D:\CardExported_PDF;文件夹不存在要先建好。
  4. 先试几条。全部导出之前,建议先只导出前两三条:选自定义范围,From 填 1,To 填 3,核对结果后再处理整个数据库。
  5. 设置文件名。前缀填 KTS_ID_Card_,起始编号 1,位数 3,就会生成 KTS_ID_Card_001.pdf、002、003。起始编号只控制输出的文件名,不会改动 CSV 里的学号。
  6. 设置裁切标记与出血。专业印刷可以启用裁切标记和出血,比如出血 3 mm,要和印厂要求一致;不需要就不开。注意:脚本使用的是界面里填写的出血值,不会自动读取 Illustrator 文档设置里的出血;而且填出血值并不会凭空生成多出来的背景图形,这些图形必须已经存在于设计里。
  7. 点“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 格式、图片路径和文字编码。变量连好、数据组能正常切换之后,批量导出就水到渠成。先用两三条记录试导,再放心跑整批。