上篇聊了手写字体在线生成器,后台收到最多的问题是:"你推荐的工具都好用,但我一次要生成六科的笔记,每科十几页,一个工具一个工具调参数,一个页面一个页面点生成,搞完一个学期人麻了。"
这个痛点是真实的。单篇手写生成器解决的是"质量"问题——怎么让一页手写稿看起来像真的人写的。但当你面对的是"数量"问题——60页笔记、30份练习册、20篇作文——单篇工具的效率就成了瓶颈。
批量 vs 单篇的核心区别:单篇工具关注"这一页像不像手写的";批量工具关注"这50页能不能半小时内全搞定,而且每一页笔迹不完全一样"。前者拼的是渲染真实度,后者拼的是自动化程度。
一、三条路径,从零门槛到可编程
先把市面上所有能实现"批量手写生成"的方案理一遍,按自动化程度从低到高排:

| 路径 | 代表工具 | 自动化程度 | 多字体随机 | PDF批量导出 | 费用 | 适合谁 |
|---|---|---|---|---|---|---|
| 路径一 | vtool / handwriting.live / 凹凸工坊 | ⭐⭐⭐ 中等 | ❌ 需手动切换 | ✅ 支持 | 免费~$2.99 | 零代码,偶尔批量 |
| 路径二 | Python脚本(Pillow + 手写字体) | ⭐⭐⭐⭐⭐ 全自动 | ✅ 可编程随机 | ✅ 任意页数 | 完全免费 | 有编程基础,大批量 |
| 路径三 | Word宏脚本(office_handwriting) | ⭐⭐⭐⭐ 高度自动 | ✅ 多字体轮换 | ✅ 另存PDF | 免费开源 | 用Word办公,不需装Python |
二、路径一:在线工具批量,三个方案实测
1. vtool手写体文稿生成器——零门槛多页PDF,完全免费
vtool是三个方案里门槛最低的。把大段文本粘贴进输入框,它会自动根据纸张大小、边距、字号帮你分页,然后一次性导出为多页PDF。
vtool批量操作步骤:
- 打开 vtool.pro/handwriting,粘贴全文(无字数上限)
- 设置纸张背景(纯白/横线/田字格等15+种)、字体(20+种手写体可选)
- 调整字号、边距、行距,让每页行数合适
- 点击"生成图片",自动按页切分,右侧预览所有页面
- 点击"以PDF格式下载所有图片",一次导出完整PDF
全程免费,不用登录,不用装任何东西。如果只是想一次性把长文转成手写PDF,vtool是最省事的。
但它的局限性也很明显:字体不能在多页之间自动切换。60页笔记从头到尾是同一种笔迹,对于需要"模拟不同人写不同科目"的场景(比如多科笔记字迹应该不同),手动每页切换字体就失去了批量化的意义。
2. handwriting.live——自动分页最智能,支持数学公式
这个工具的分页算法明显比vtool更精细。它不只是按字符数机械切分,而是会考虑段落的完整性,不会把一个句子切到两页。此外它支持Unicode数学符号(²、α、β、±、√、∑、∫等),做数学笔记或化学方程式的时候比vtool强一截。
注意:预览免费,但导出PDF需要一次性支付 $2.99(约21元人民币),购买后30天内无限次导出。如果你只是偶尔用一次,不如vtool免费方案划算;但如果你这个月要批量做很多份,$2.99买30天畅用是值的。
它的排版也支持拖拽微调,这在多页场景下很实用——有时候自动分页会在某页底部留半个空白行,可以手动把内容往上挪一点,让每页都撑满。
3. 凹凸工坊——拟真度最高,但收费
凹凸工坊的手写效果在同类工具中公认最逼真。它的涂改率设置(模拟真实书写中的涂改痕迹)、纸张纹理叠加、笔触深浅变化这些细节,都比vtool好一个档次。
批量场景下的优势:
- 支持"超级DIY"模式,自定义背景、填表格位置,适合批量处理固定模板的文档(如全班填同一张表格)
- 涂改效果可调,批量生成时设定一个随机范围的涂改率,每页看起来书写状态不同
- 导出支持图片和PDF两种格式
缺点:收费,且网页有时不太稳定。适合对拟真度要求极高、不计较几十块钱的场景。
三、路径二:Python脚本全自动化——批量+随机字体+任意页数
如果你有Python基础(没有的话装个Python也就五分钟),这条路径是批量手写生成的终极方案。一个脚本搞定:读入TXT文本→自动分页→每页随机换一种手写字体→调整字间距和行高增加随机感→全部导出为一个多页PDF。
核心原理很简单:用Pillow库逐页画图,每页画的时候从字体列表里随机选一个手写体ttf文件,然后用textwrap自动换行排版,最后把生成的图片列表合并保存为PDF。
import os, random, textwrapfrom PIL import Image, ImageDraw, ImageFont# 配置区——按自己需求改TEXT_FILE = "notes.txt" # 要转换的文本文件FONT_DIR = "C:/fonts/handwriting/" # 手写字体文件夹,放多个ttfOUTPUT_PDF = "手写笔记.pdf"PAGE_W, PAGE_H = 800, 1100 # A4比例FONT_SIZE_RANGE = (28, 32) # 每页字号随机波动MARGIN = 60def get_random_font():fonts = [f for f in os.listdir(FONT_DIR) if f.endswith(('.ttf','.otf'))]return os.path.join(FONT_DIR, random.choice(fonts))def create_page(text_lines, font_path, font_size):img = Image.new('RGB', (PAGE_W, PAGE_H), '#FFFEF9')draw = ImageDraw.Draw(img)font = ImageFont.truetype(font_path, font_size)y = MARGINfor line in text_lines:# 字间距随机微调,增加手写感x = MARGINfor ch in line:draw.text((x, y + random.randint(-1, 1)), ch,fill='#2a2a2a', font=font)x += font_size * 0.95 + random.uniform(-0.5, 1.5)y += font_size + random.randint(4, 8) # 行间距也随机if y > PAGE_H - MARGIN: breakreturn img# 读文本 → 自动分页 → 每页随机字体 → 导出PDFwith open(TEXT_FILE, 'r', encoding='utf-8') as f:full_text = f.read()max_chars = (PAGE_W - 2*MARGIN) // (FONT_SIZE_RANGE[1] - 4)max_lines = (PAGE_H - 2*MARGIN) // (FONT_SIZE_RANGE[1] + 6)# 按段落保留完整性来分页paragraphs = full_text.split('\n\n')pages, current_page_lines, current_line_count = [], [], 0for para in paragraphs:if not para.strip(): continuepara_lines = textwrap.wrap(para, width=max_chars)if current_line_count + len(para_lines) + 1 > max_lines:pages.append(current_page_lines)current_page_lines, current_line_count = [], 0current_page_lines.extend(para_lines)current_page_lines.append('') # 段间距current_line_count += len(para_lines) + 1if current_page_lines:pages.append(current_page_lines)# 逐页生成,每页换随机字体和字号images = []for i, page_lines in enumerate(pages):font_path = get_random_font()font_size = random.randint(*FONT_SIZE_RANGE)img = create_page(page_lines, font_path, font_size)images.append(img)print(f"第{i+1}页: {os.path.basename(font_path)} {font_size}pt")images[0].save(OUTPUT_PDF, save_all=True, append_images=images[1:])print(f"完成!共{len(images)}页,保存为 {OUTPUT_PDF}")
这个脚本做了三件事,是任何在线工具都做不到的:
- 每页随机换字体:字体文件夹里放5-8个手写体ttf文件,每页随机抽一个。60页笔记看起来像60个人写的
- 字号随机微调:每页28-32pt之间随机波动,真实手写不可能每页字号完全一样
- 字间距和行高随机抖动:每个字符的x坐标±1.5像素浮动,y坐标±1像素浮动,行间距也在4-8像素之间随机,模拟真实书写的不规整感
这个脚本只需要装一个库:pip install Pillow,然后把手写字体ttf文件放到FONT_DIR目录,把要转换的文本保存为TXT文件,运行就完了。
手写字体ttf从哪来?
网上搜"手写体ttf免费下载"一大堆,推荐几个来源:
字体家AI神笔造字
手写8个字,AI自动生成一套专属手写字体ttf,下载后放进FONT_DIR就能用
字由(hellofont.cn)
上万款字体,搜索"手写体"筛选,免费字体直接下载ttf
Google Fonts 中文字体
"Ma Shan Zheng"(马山正)、"ZCOOL KuaiLe"等开源手写体,商业可用

GitHub开源手写字体仓库
搜"handwriting chinese font ttf",有整包的手写字体合集
四、路径三:Word宏脚本——不用装Python,Office里直接跑
很多人电脑上有Word但没有Python。这种情况用office_handwriting这个开源宏脚本,在Word里直接批量生成手写效果。
原理是把Word文档里的文字替换为随机手写字体(每段甚至每行可以轮换不同字体),同时给每个字加随机的微调——字号波动±0.5pt、字符间距±0.3pt、基线偏移±1pt——这些微调肉眼看不出来但放在一起就会打破印刷体的规整感。
使用步骤:
- 从 GitHub 下载 office_handwriting 项目(搜 DaviesGit/office_handwriting)
- 把字体文件安装到系统(双击ttf→安装)
- 在Word里按Alt+F11打开VBA编辑器,导入宏脚本
- 粘贴你的文本到Word文档,运行宏,自动转换
- 另存为PDF,完成
这个方案的优点是零环境配置,办公室电脑直接能用。缺点是效果不如Python脚本细腻——Word的排版引擎在处理字间距微调时不如Pillow灵活。
五、五个批量生成最容易翻车的地方
翻车1:大文本丢段落、丢内容
在线工具的分页算法各不相同,有些是按字符数硬切的,遇到刚好在段落中间切开会丢掉半句话。解决:长文本先按自然段拆分,每个自然段检查是否完整。Python脚本里用textwrap.wrap配合段落边界检测,不会丢内容。
翻车2:PDF导出后缺页、顺序错乱
在线工具一次性生成30+页时,浏览器可能内存不够,导出PDF会丢页。解决:分批生成,每10页导出一次,最后用在线PDF合并工具拼起来。Python脚本不存在这个问题,全程内存操作。
翻车3:字体随机切换后同一页字体不统一
这是新手写Python脚本时最容易犯的错——把随机字体逻辑放在逐行生成里,导致同一页上下字体不一样。解决:随机字体应该以"页"为单位,每页开始时抽一次字体,整页用同一个。
翻车4:生僻字变成方框
有些手写体ttf的字库不全,生僻字或特殊符号会显示为方框(□)。解决:生成完后翻一遍PDF,检查有没有方框。选字体时优先选字库大的(6000+汉字覆盖GB2312基本够用)。
翻车5:多字体轮换后笔迹风格跳跃太大
如果字体库里放的行楷、草书、圆体风格差异太大,相邻两页笔迹从"娟秀小字"突然变成"豪放草书",穿帮明显。解决:选字体时控制在同一种风格系内(比如全选"偏楷体的手写风格"),字号差异控制在±3pt内。
六、哪种场景选哪条路
| 场景 | 推荐路径 | 原因 |
|---|---|---|
| 偶尔一次,不到10页 | 路径一 vtool | 零门槛,免费,粘贴即生成 |
| 单科大量笔记,20-50页 | 路径一 vtool/handwriting.live | 同字体无所谓的场景,在线工具够用 |
| 多科笔记,每科要不同字迹 | 路径二 Python脚本 | 按科目录分别指定字体,一跑全出 |
| 全班30人练习册,每人一份 | 路径二 Python脚本 | 循环30次每人随机字体,全自动输出 |
| 办公室电脑,不让装Python | 路径三 Word宏 | Word自带VBA,零额外安装 |
| 要求极高拟真度(打印看不出来) | 凹凸工坊 + Python脚本 | 凹凸工坊渲染质量最高,Python做批量调度 |
| 需要数学公式/化学方程式 | handwriting.live | 唯一原生支持Unicode数学符号 |
最后说两句
批量手写生成的本质是"把重复劳动自动化"。如果你只用一次、不到10页,vtool粘贴即生成,5分钟搞定。如果你需要定期大批量出稿、要求每页字迹不同,花半小时装个Python搭好脚本,以后每次只需要改一下TXT文件、跑一下命令,剩下的全自动。
上篇文章写了六款单篇手写生成器怎么选,这篇补上了"批量"这个维度。两篇合在一起,从单页到60页、从零代码到可编程,应该覆盖了手写体生成的所有真实需求场景。
