在电子合同、审批流程中,手写签名(非数字证书签名)是高频需求。本文基于10页PDF,对比三类添加手写签名(手绘/图片签名)的方案。
测试环境
- 测试文件:10页合同PDF,预留签名栏
- 硬件:4核8G云服务器(Ubuntu 22.04)
- 网络:国内普通宽带
- 方法:每款工具添加手写签名后保存,检查签名是否保留、是否可调整位置
一、开源自建(PyPDF2 + reportlab)
使用Python生成签名图片并叠加到PDF指定位置。
python
from reportlab.pdfgen import canvas
from PyPDF2 import PdfWriter, PdfReader
import io
# 创建签名图片
packet = io.BytesIO()
c = canvas.Canvas(packet, pagesize=(100, 50))
c.setFont("Helvetica", 20)
c.drawString(10, 10, "John Doe")
c.save()
packet.seek(0)
# 叠加到PDF
reader = PdfReader("input.pdf")
writer = PdfWriter()
watermark = PdfReader(packet)
for page in reader.pages:
page.merge_page(watermark.pages[0])
writer.add_page(page)
writer.write("output.pdf")
- 耗时:约3秒(本地)
- 优点:完全免费,可精确控制位置、支持批量,无限制
- 缺点:需编程,手绘签名需额外处理(如导入图片)
二、商业API(腾讯云电子签章)
- 支持手写绘制、图片签名、证书签名
- 计费:约0.2元/次
- 适用:企业级合同签署、流程管理
三、在线工具实测
| 工具 | 签名方式 | 位置调整 | 免费限制 | 水印 |
|---|---|---|---|---|
| 西西PDF转换(小程序) | 手写绘制+图片上传 | 拖拽缩放 | 无限制 | 无 |
| Sejda | 手写绘制+图片上传 | 拖拽 | 3次/日,50页 | 无 |
| Smallpdf | 需付费 | — | 2次/时,10MB | 有 |
| PDF Candy | 手写绘制 | 固定位置 | 3次/时,20MB | 有水印 |
关键点:海外工具免费版添加签名时常附带自身水印;国内小程序(如西西PDF转换)支持手写绘制和图片上传,签名可拖拽调整,完全免费。
四、选型建议
- 个人日常签署:国内小程序(如西西PDF转换),5秒添加手写签名,完全免费
- 批量自动化:自建PyPDF2脚本,本地运行无限制
- 企业法律效力:采用商业电子签章API(数字证书签名)
根据需求选择即可。
本文为技术测评,数据基于实测。
