@embedpdf/plugin-signature

中文文档
3.2.0发布于 2026/11/12Apache-2.0TypeScriptESM + CJS近 30 天下载 110.8万

Document-scoped digital signing: sign a signature field with a mark (a stamp-library asset or bytes you bring) through a signer port, fill it visually without sealing, validate what is signed, and drop an armed mark onto a field. Owns the act, never a mar

原始使用文档

@embedpdf/plugin-signature

Document-scoped digital signing for EmbedPDF: sign a signature field with a mark (a stamp-library asset — drawn, typed, uploaded — or bytes you bring) through a signer port you configure; fill a field visually without sealing; validate what is signed; and drop an armed mark onto a field.

The plugin owns the act and nothing else:

  • marks are the stamp plugin's (@embedpdf/plugin-stamp) — one library of kind signatures per person, holding a signature asset and optional initials;
  • the key is a SignerPort from @embedpdf/core-signature (webCryptoSigner, remoteSigner, personalSigner), the key setting, resolved per signing;
  • the engine draws the mark's page into the field and seals the bytes (doc.signatures.prepare → CMS → complete); on the cloud the server publishes the new version.
import { toFieldRef } from '@embedpdf/plugin-form';
import {
  signaturePlugin,
  SignatureToken,
  personalSigner,
  indexedDbKeyStore,
} from '@embedpdf/plugin-signature';

signaturePlugin({
  key: () => personalSigner({ subject: 'Ada Lovelace', store: indexedDbKeyStore('keys') }),
  trust: { anchors: async () => [rootCertificateDer] },
  mode: 'sign', // 'sign' (the default with a key) | 'visual' (the default without) | 'ask'
});

const signature = ctx.get(SignatureToken);
await signature.placeMark({ assetId }, { field: toFieldRef('approval') }); // sign / fill / ask, by mode
await signature.placeMark({ assetId }, { page, center: { x: 120, y: 90 } }); // elsewhere: a stamp

With the interaction hub and the stamp plugin present, a mark armed from a signatures library and clicked over an unsigned signature field goes into the field; anywhere else it is placed as a stamp.

Requires @embedpdf/plugin-form; optional @embedpdf/plugin-stamp, @embedpdf/plugin-annotation, @embedpdf/plugin-interaction. See the docs page headless/forms/signatures for the full contract.

版本与发布记录

@embedpdf/plugin-signature 共发布 22 个版本,首次发布于 2026/04/04;过去 12 个月发布了 22 个版本。

版本发布日期距今
3.2.0latest2026/11/121 天前
3.1.02026/11/094 天前
3.0.02026/11/076 天前
3.0.0-next.23next2026/11/076 天前
3.0.0-next.222026/11/049 天前
3.0.0-next.212026/11/0310 天前

关于 @embedpdf/plugin-signature 的常见问题

@embedpdf/plugin-signature 是什么?

Document-scoped digital signing: sign a signature field with a mark (a stamp-library asset or bytes you bring) through a signer port, fill it visually without sealing, validate what is signed, and drop an armed mark onto a field. Owns the act, never a mar

如何安装 @embedpdf/plugin-signature?

在项目目录运行 npm install @embedpdf/plugin-signature,或使用 pnpm add / yarn add / bun add。

@embedpdf/plugin-signature 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@embedpdf/plugin-signature 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@embedpdf/plugin-signature 可以商用吗?

@embedpdf/plugin-signature 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@embedpdf/plugin-signature 的下载量有多少?

根据 npm 官方下载统计,@embedpdf/plugin-signature 在 2026/10/14 – 2026/11/12 这 30 天内被下载 1,107,645 次,日均约 36,922 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@embedpdf/plugin-signature 还在维护吗?

最新版本 3.2.0 发布于 2026/11/12(1 天前);至今共发布 22 个版本,其中过去 12 个月发布了 22 个;首次发布于 2026/04/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。