Signature PDF 1.11.0 介绍与选型指南
认知 Signature PDF 1.11.0(24eme/signaturepdf)的定位、架构与功能边界,并与 Docuseal、Papra、PdfDing、Stirling-PDF 等自托管 PDF 签名/处理项目做量化选型对比。
Signature PDF 1.11.0 介绍与选型指南
目标:认知 Signature PDF(24eme/signaturepdf)是什么、解决什么问题、架构与功能边界如何,并与自托管 PDF 签名/处理赛道的常见替代项做量化选型对比。本篇为认知篇,全部内容来自官方仓库与公开渠道联网溯源(查询日期 2026-11-02),部署与接口实测结论见本专栏姊妹篇。
一、环境信息
- 溯源对象:GitHub 仓库
24eme/signaturepdf(法国 24ème 协会维护) - 溯源渠道:仓库 README.md / installation.md / LICENSE、data.jsdelivr.com git tags 版本线、shields.io 徽章服务(星数/版本/许可证,查询日期 2026-11-02)
- 最新稳定版:v1.11.0(来源:
https://img.shields.io/github/v/release/24eme/signaturepdf.json,2026-11-02 实查) - 社区规模:GitHub 星数 831(来源:
https://img.shields.io/github/stars/24eme/signaturepdf.json,2026-11-02 实查,徽章返回值831) - 许可证:AGPL-3.0(来源:仓库 LICENSE 文件与 README 徽章)
- 技术栈:PHP(Fat-Free 微框架)+ Apache,前端 PDF.js / Fabric.js,服务端依赖 pdftk、rsvg-convert、potrace、ImageMagick、Ghostscript、GPG
💡 说明:Signature PDF 与同名近似项目(如 Docuseal、Papra、PdfDing、Stirling-PDF)容易混淆,本篇第二章先给出实体定论,第七章再逐项对比差异。
二、软件概述
2.1 实体定论
Signature PDF 是法国开源促进协会 24ème(24eme association,https://www.24eme.fr)开发的**自由 Web 软件**,官方仓库为 24eme/signaturepdf,一句话定位(README 原文):
Free web software for signing (alone or with others), organizing (merge, sort, rotate, delete, extract pages, ...), editing metadatas or compressing PDFs.
即:单人或多人签署 PDF、页面整理(合并/排序/旋转/删除/抽页)、编辑元数据、压缩 PDF 的自托管 Web 工具。它不是「电子签名平台」(无签署人身份认证、无审计流),而是一个把 PDF 处理装进浏览器的轻量工具站:上传即处理,默认不留存。
- 开发主体:24ème 协会员工在工作时间内主导开发,贡献者共 9 人(Vincent LAURENT、Jean-Baptiste Le Metayer、Tangui Morlier、Gabriel POMA、Tanguy Le Faucheur(均 24ème),Xavier Garnier、Simon Chabot(Logilab),Étienne Deparis、battosai30)(来源:README Contributions 节,2026-11-02 实查)。
- 资助来源:Logilab 公司出资 1365 €(共享签名)与 1950 €(元数据编辑);NLNet 基金会多笔资助(国际化、压缩、加密存储、密钥签名、客户端页面整理、deb 包各 1040 €,PDF 外置存储 520 €)(来源:README Fundings 节)。
- 公共实例:官方 README 收录 17 个公共部署实例,包括 pdf.24eme.fr、framapdf.org(Framasoft 运营)、pdf.libreon.fr、signature.pdf.hostux.net 等(来源:README Instances 节)。
2.2 版本与发布节奏
版本线取自 data.jsdelivr.com git tags(2026-11-02 实查,共 24 个 tag):1.11.0、1.10.0、1.9.2、1.9.1、1.9.0、1.8.0、1.7.4 … 1.5.0。节奏为每季度至半年一个小版本,无 LTS 分支;README 声明「最新稳定版在 master 分支」,升级即 git pull -r。官方在 Docker Hub 发布镜像 xgaia/signaturepdf(README 徽章显示拉取量统计入口,2026-11-02 实查),基础镜像为 php:8.2-apache。
2.3 「签名」语义辨析
💡 技术拓展:PDF「签名」在业界指两条完全不同的技术路径,本项目两者都支持,选型前务必分清——
路径 原理 效力 Signature PDF 的实现 外观签名(electronic signature) 把手写/文本/图片渲染成 SVG 图层,用 pdftk multistamp压印到 PDF 页面证明「谁在页面上签了字」,不可密码学验真 默认路径,开箱即用 数字签名(digital signature) 用 PKI 证书对文件摘要做密码学签名(PKCS#7),嵌入签名栏可被阅读器验真 防篡改可验证,法律效力更强 可选,依赖 pdfsig(poppler-utils)+ NSS 证书库,官方镜像默认未装本文所述「签名」默认指外观签名路径;数字签名配置方法见 《Signature PDF 1.11.0 配置参数详解》 的 NSS 章节。
三、核心架构
3.1 分层与数据流
Signature PDF 是单体 PHP 应用(Fat-Free 微框架路由 + 模板直出),无数据库、无后台队列,所有状态都落在文件系统:
浏览器(PDF.js 渲染页面 + Fabric.js 画布摆放签名元素)
│ multipart POST(pdf + svg[] 图层文件)
▼
Apache + PHP(Fat-Free 路由,public/index.php 入口)
│ shell_exec
▼
外部工具链:rsvg-convert(SVG→PDF)→ pdftk(multistamp 压印)
→ Ghostscript(压缩)→ GPG(共享存储加密)→ pdfsig(数字签名,可选)
- 前端负责「画」:手写签名板(signature_pad)、文本转路径(OpenType.js + Caveat 手写字体)、图片导入矢量化(服务端
/image2svg:ImageMagick→mkbitmap→potrace)。 - 后端负责「合」:收到的 SVG 图层先
rsvg-convert转 PDF,再pdftk multistamp逐层压印到原 PDF;单人模式处理完即回传、不落盘(README 首页原文提示 "The PDF will be processed by the server without being retained or stored")。 - 多人协作模式才启用服务端存储:
PDF_STORAGE_PATH目录下按 32 位哈希建目录存放original.pdf+ 每层签名<时间戳>.svg.pdf/.sign.pdf,并配.expire(保留期)与.admin(管理密钥)两个旁路文件。
3.2 路由面(v1.11.0 源码实查)
应用路由全部定义在仓库根 app.php(2026-11-02 拉取 v1.11.0 tag 源码核对),共 20 余条,分三组:
| 组 | 路由 | 用途 |
|---|---|---|
| 页面 | GET /、/signature、/organization、/metadata、/compress、/ocr | 四大功能 Tab(签名/整理/元数据/压缩)+ OCR |
| 处理 | POST /sign、/share、/image2svg、/compress、/ocr;GET /signature/@hash/pdf、/signature/@hash/nblayers、/signature/@hash/delete/@key、/cron | 签名合成、共享流程、图片矢量化、清理到期共享 |
| API | POST /api/share/new;GET /api/share/get/@hash/@symmkey、/api/share/delete/@hash/@adminkey、/api/file/get | 以 JSON 驱动共享签名生命周期 |
💡 说明:该项目没有独立 CLI 管理命令,运维与集成均走上述 HTTP 面;逐条实测见 《Signature PDF 1.11.0 API 使用详解》。
四、功能特性
按 README 与 v1.11.0 源码归纳(2026-11-02 实查):
- 单人签名:手写绘制、键入文本(Caveat 手写体渲染)、导入图片(可矢量化)三种签名元素;支持签名、缩略章(initials)、印章、文本、删除线、复选框、涂抹区(redaction)、水印;
flatten选项将结果栅格化(ImageMagick,防图层剥离)。 - 多人协作签名:把 PDF 存到服务端并生成分享链接,多人先后在同一文档上叠加签名层;保留期可选 1 小时~1 年(可自定义);发起人持有管理密钥可随时删除共享;可启用 GPG 对称加密存储(密钥藏在链接
#片段中,服务端不可读明文)。 - 数字签名(可选):配置 NSS 证书库后,每次压印自动调用
pdfsig附加密码学签名("Signed with SignaturePDF")。官方镜像未预装 poppler-utils/libnss3-tools,需自行补装。 - 页面整理:合并、排序、旋转、删除、抽页,上限受
MAX_FILE_UPLOADS(页数+1)约束;整理动作由前端 PDF-LIB 计算、后端 pdftk 执行。 - 元数据编辑:基于 cantoo-scribe 维护的 pdf-lib fork 改写文档信息字典,可预置默认字段(文本/日期/数字/邮箱等 HTML 输入类型)。
- 压缩:Ghostscript
pdfwrite三档(/screen、/ebook、/printer),压缩无收益时返回 204 不产出文件。 - OCR:
/ocr路由调用ocrmypdf --force-ocr,需自行安装 ocrmypdf(官方镜像未预装)。 - 多语言:15 种界面语言(ar/de/en/es/eu/fr/it/gl/kab/nl/oc/pl/ro/ta/tr),托管在 hosted.weblate.org 协作翻译;阿拉伯语自动 RTL。
五、快速开始
官方 installation.md 给出的最小启动方式(事实转述,2026-11-02 实查原文):
# 官方 Docker 方式(README/installation.md 原文命令)
docker run -d --name=signaturepdf -p 8080:80 xgaia/signaturepdf
# 打开 http://localhost:8080
# 裸机最小方式(Debian/Ubuntu)
sudo apt-get install php librsvg2-bin pdftk imagemagick potrace ghostscript locales gpg
git clone https://github.com/24eme/signaturepdf.git
cd signaturepdf
php -S localhost:8000 -t public
两条路径都不需要数据库与额外中间件,装齐 6 个外部命令即可跑通「上传→画签名→下载」闭环。生产化部署(端口规划、上传限额、共享存储目录、语言)见 《Signature PDF 1.11.0 Docker Compose 部署指南》。
六、适用场景与限制
适合:
- 协会/小微团队/个人自托管的「轻量签署站」:合同、确认单、回执的单页手写签名与多方接力签署;
- 需要把 PDF 工具箱(签名/整理/元数据/压缩)以零依赖 Web 形式开放给非技术用户的场景;
- 对「服务器不留存文件」有洁癖的场景(单人模式默认流式处理即焚)。
不适合 / 限制:
- 无签署人身份体系:共享链接即凭证,拿到链接的人都能签,无邮箱验证、无账号、无审计日志——不能替代 Docuseal/DocuSign 这类有合规签署流的电子签名平台;
- 外观签名不可验真:默认路径的签名是「压印的图像」,防篡改能力弱(可用 flatten 与数字签名路径部分弥补);
- 多人模式强制服务端留存 PDF(README 明确提示),与「不留存」定位互斥,需自行评估保留期与加密;
- 上传限额双约束:单文件 ≤
UPLOAD_MAX_FILESIZE、页数 ≤MAX_FILE_UPLOADS - 1; - 数字签名与 OCR 均依赖镜像外组件,官方镜像开箱不含;
- 界面为纯工具页,无模板、无字段角色、无批量签署任务管理。
七、同类选型对比
候选范围锁定「自托管、Web、与 PDF 签署/处理相关」的开源项目,星数与版本取自 shields.io 徽章 JSON 端点(查询日期 2026-11-02),许可证以各仓库 LICENSE/官方口径为准:
| 项目 | 星数(2026-11-02) | 最新版本 | 许可证 | 形态 | 定位 | 多人协作签署 | 签署人身份/审计 | API |
|---|---|---|---|---|---|---|---|---|
| Signature PDF | 831 | v1.11.0 | AGPL-3.0 | PHP+Apache 单体,无数据库 | 轻量签名+PDF 工具箱 | ✅ 链接分享接力签 | ❌ 无 | ✅ 共享生命周期 JSON API |
| Docuseal | 19k | v3.3.4 | AGPL-3.0(社区版) | Rails,SQLite/PostgreSQL | 合规电子签名平台(DocuSign 替代) | ✅ 多角色签署流 | ✅ 邮箱验证+审计链 | ✅ 完整 REST |
| Papra | 5.7k | 26.7.1 | AGPL-3.0 | Node.js,PostgreSQL/S3 | 文档归档管理 | ❌ | ❌ | ✅ REST |
| PdfDing | 1.8k(GitHub 镜像) | 1.14 | AGPL-3.0 | Go 单体 | 个人 PDF 库管理/标注 | ❌ | ❌ | 有限 |
| Stirling-PDF | 96k | v3.2.2 | open-core(社区版免费) | Java,单体 | PDF 处理全家桶 | ❌(无协作签署) | ❌ | ✅ REST 50+ 操作 |
对比解读:
- 要「签署流程合规」(身份验证、审计、模板角色)→ 选 Docuseal,见 《Docuseal 3.3.4 介绍与选型指南》;Signature PDF 与之不在同一赛道。
- 要「文档库/归档」→ Papra(《Papra 26.7.1 介绍与选型指南》)或 PdfDing(《PdfDing 介绍与选型指南》)。
- 要「批量 PDF 处理自动化」(转换、合并、OCR 流水线)→ Stirling-PDF(《Stirling-PDF 3.2.0 介绍与选型指南》),它不做多人接力签署。
- 要「零依赖、五分钟上线的签名小站,同事间手写签字互认」→ Signature PDF 是这组里唯一直接命中「多人共享链接接力签名」且无任何数据库依赖的项目;星数虽少,但由法国协会长期维护、NLNet 资助迭代、17 个公共实例在生产运行,成熟度证据充分。
「如果…则…」速记:
- 如果签署双方互不相识、需要法律追责链 → 不用 Signature PDF,上 Docuseal 或商业服务;
- 如果是协会/小团队内部单据签字、且介意文件上传第三方 → 自托管 Signature PDF;
- 如果既想签名又想顺手压页/改元数据 → Signature PDF 一站完成,不必再配 Stirling-PDF。
八、参考链接
- 官方仓库:https://github.com/24eme/signaturepdf (README、installation.md、LICENSE,查询日期 2026-11-02)
- 官方 Docker Hub:https://hub.docker.com/r/xgaia/signaturepdf
- 翻译协作:https://hosted.weblate.org/engage/signature-pdf/
- 公共实例列表:README Instances 节(pdf.24eme.fr、framapdf.org 等 17 个)
- 版本线:https://data.jsdelivr.com/v1/packages/gh/24eme/signaturepdf (git tags,2026-11-02 实查)
- 本专栏姊妹篇:《Signature PDF 1.11.0 Docker Compose 部署指南》、《Signature PDF 1.11.0 配置参数详解》、《Signature PDF 1.11.0 API 使用详解》