尧图网络科技 Logo 尧图网络科技
  • 首页
  • 关于我们
  • 建站服务
  • UI 设计
  • 案例展示
  • SEO 优化
  • 资讯中心
  • 联系我们

资讯详情

深度解读 · 专业分析

  • 首页
  • 资讯中心
  • /
  • 通过 C# 为 PDF 文档添加电子签名

最新资讯

  • 全部资讯
  • 行业动态
  • UI 设计
  • SEO 优化
  • 网站开发

通过 C# 为 PDF 文档添加电子签名

📅 发布时间:2026/6/17 23:32:06 👁 浏览次数:
通过 C# 为 PDF 文档添加电子签名

通过 C# 为 PDF 文档添加电子签名

电子签名在文档合规性与安全性保障中扮演着重要角色,基于 C# 开发 PDF 电子签名功能是企业级文档处理场景的常见需求。Free Spire.PDF for .NET 作为免费的 PDF 处理类库,无需依赖 Adobe Acrobat 等第三方软件,即可便捷实现 PDF 电子签名添加。本文将介绍该类库的使用方式、PDF 电子签名的实现流程、解析关键代码参数等。

一、前置准备

1. 安装免费库

通过 NuGet 包管理器快速安装:

Install-Package FreeSpire.PDF

2. 核心依赖说明

实现电子签名需依赖 .pfx 格式的数字证书(包含私钥):

  • 测试场景:可通过 OpenSSL、Windows 证书管理器生成自签名证书;
  • 生产场景:需使用 CA 机构颁发的合规证书(符合《电子签名法》要求);
  • 证书加载:通过 System.Security.Cryptography.X509Certificates.X509Certificate2 类解析 .pfx 文件,是本次实现的核心依赖。

二、核心实现逻辑

PdfOrdinarySignatureMaker 是 Free Spire.PDF 中面向普通电子签名的核心类,其核心流程为:
加载 PDF 文档 → 解析 X.509 证书→ 初始化签名器 → 执行签名 → 保存文档。

以下基于该类实现基础签名功能,并扩展添加可见签名等进阶示例。

1. 基础版:添加基础电子签名(默认不可见)

适用于仅需验签、无需视觉标识的场景,核心代码附带详细注释:

using Spire.Pdf;
using Spire.Pdf.Interactive.DigitalSignatures;
using System;
using System.Security.Cryptography.X509Certificates;namespace PdfDigitalSignature
{class BasicSignatureDemo{static void Main(string[] args){try{// 1. 加载待签名的 PDF 文档using (PdfDocument pdfDoc = new PdfDocument()){pdfDoc.LoadFromFile("Input.pdf"); // 替换为实际文件路径// 2. 加载数字证书(指定密钥存储策略,适配服务器/客户端环境)string certPath = "certificate.pfx"; // 替换为证书实际路径string certPassword = "abc123"; // 替换为证书密码X509Certificate2 cert = new X509Certificate2(certPath,certPassword,// 关键标志:适配服务器环境+避免密钥持久化,提升安全性X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.EphemeralKeySet);// 3. 初始化签名器并执行签名PdfOrdinarySignatureMaker signMaker = new PdfOrdinarySignatureMaker(pdfDoc, cert);// 签名名称:用于后续识别/验证签名,建议唯一signMaker.MakeSignature("Basic_Signature_001");// 4. 保存签名后的文档pdfDoc.SaveToFile("Signed_Basic.pdf");Console.WriteLine("不可见签名添加成功!");}}catch (Exception ex){Console.WriteLine($"签名失败:{ex.Message}");// 进阶:记录异常详情(如堆栈)便于排查Console.WriteLine($"异常详情:{ex.StackTrace}");}}}
}

2. 进阶版:添加可见签名

在基础签名上扩展视觉标识(含签名图片、文本信息),适用于需要直观展示签名的场景:

using Spire.Pdf;
using Spire.Pdf.Interactive.DigitalSignatures;
using System;
using System.Drawing;
using System.Security.Cryptography.X509Certificates;namespace PdfDigitalSignature
{class AdvancedSignatureDemo{static void Main(string[] args){try{// 1. 加载 PDF 文档(using 自动释放资源)using (PdfDocument pdfDoc = new PdfDocument()){pdfDoc.LoadFromFile("Input.pdf");// 2. 加载数字证书string certPath = "certificate.pfx";string certPassword = "abc123";X509Certificate2 cert = new X509Certificate2(certPath,certPassword,X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.EphemeralKeySet);// 3. 初始化签名器PdfOrdinarySignatureMaker signMaker = new PdfOrdinarySignatureMaker(pdfDoc, cert);PdfSignature signature = signMaker.Signature;// 4. 配置签名元信息(将显示在签名外观中)signature.Name = "XX科技有限公司";       // 签名者名称signature.ContactInfo = "010-12345678"; // 联系信息signature.Location = "中国·北京";        // 签名地点signature.Reason = "确认文档内容合规有效";// 签名原因// 5. 配置签名可视化外观PdfSignatureAppearance appearance = new PdfSignatureAppearance(signature);// 自定义标签文本appearance.NameLabel = "签名主体:";appearance.ContactInfoLabel = "联系电话:";appearance.LocationLabel = "签署地点:";appearance.ReasonLabel = "签署原因:";// 添加签名图片(支持 PNG/JPG 等格式)PdfImage signImage = PdfImage.FromFile("signature.png"); // 替换为签名图片路径appearance.SignatureImage = signImage;// 布局模式:图片 + 文本(可选:SignImageOnly/仅图片;SignDetailOnly/仅文本)appearance.GraphicMode = GraphicMode.SignImageAndSignDetail;// 6. 绑定外观并添加到指定位置signMaker.SignatureAppearance = appearance;// 获取目标页面(示例:最后一页)PdfPageBase targetPage = pdfDoc.Pages[pdfDoc.Pages.Count - 1];// MakeSignature 参数说明:签名名称、目标页面、X坐标、Y坐标、宽度、高度、外观signMaker.MakeSignature("Advanced_Signature_001", targetPage, 54.0f, 330.0f, 280.0f, 90.0f, appearance);// 7. 保存文档pdfDoc.SaveToFile("Signed_Advanced.pdf");Console.WriteLine("可视化签名添加成功!");}}catch (Exception ex){Console.WriteLine($"签名失败:{ex.Message}");Console.WriteLine($"异常详情:{ex.StackTrace}");}}}
}

三、关键参数与类说明

  • PdfOrdinarySignatureMaker:核心签名器类,关联PDF文档与 X.509 证书,执行签名操作。
  • X509Certificate2:加载 .pfx 格式数字证书,解析私钥与公钥。
  • X509KeyStorageFlags:密钥存储标志,控制证书加载的存储区与密钥生命周期
    • MachineKeySet 适配服务器环境
    • EphemeralKeySet 提升安全性
  • PdfSignatureAppearance:配置可见签名的外观,包括签名框位置、文本信息等。
  • GraphicMode:可见签名布局样式 (参数: SignImageOnly (仅图片), SignDetailOnly (仅文本), SignImageAndSignDetail (图片+文本))
  • MakeSignature:执行签名方法。

四、注意事项

  1. 证书安全:.pfx 证书包含私钥,需加密存储,避免硬编码密码,建议通过配置文件/密钥管理服务管理;
  2. 权限适配:服务器环境下加载证书需赋予应用程序足够的密钥访问权限,避免 CryptographicException ;
  3. 兼容性测试:签名后的 PDF 需在 Adobe Acrobat、WPS、浏览器等主流阅读器中验证显示与签名有效性;

五、总结

基于 Free Spire.PDF for .NET 的 C# 实现方案,以 “轻量化、低门槛、易集成” 为核心优势,仅需数十行代码即可完成 PDF 电子签名的基础与进阶功能。该方案适配 .NET Framework/.NET Core/.NET 5+ 全框架,能快速落地到企业级文档处理系统中。如需更高的安全性与合规性,可结合 CA 证书、时间戳服务进一步扩展。

相关新闻

颠覆性Android代理管理:告别繁琐设置的时代已来临

颠覆性Android代理管理:告别繁琐设置的时代已来临

2026/6/11 14:56:25 查看详情
13、Java 8 递归优化与函数组合实战

13、Java 8 递归优化与函数组合实战

2026/6/17 20:31:01 查看详情
21、GAN 创新技术与应用前景

21、GAN 创新技术与应用前景

2026/6/11 15:14:39 查看详情
2026年 不锈钢棒厂家推荐排行榜:304/316不锈钢圆棒、光亮棒、研磨棒、六角棒源头实力品牌精选! - 品牌发掘

2026年 不锈钢棒厂家推荐排行榜:304/316不锈钢圆棒、光亮棒、研磨棒、六角棒源头实力品牌精选! - 品牌发掘

2026/6/17 23:29:04 查看详情
独立开发者全栈实战:从Soloent模式到高效产品构建

独立开发者全栈实战:从Soloent模式到高效产品构建

2026/6/17 23:29:04 查看详情
026 苏州 5 家猫犬舍实地测评|江南梅雨季购宠首选伴西西 - 同城宠物优选基地

026 苏州 5 家猫犬舍实地测评|江南梅雨季购宠首选伴西西 - 同城宠物优选基地

2026/6/17 23:29:04 查看详情
**2026 香港全屋定制避坑手册 + 靠谱商家推荐 + 闭口合同零增项参考** - 产品测评官

**2026 香港全屋定制避坑手册 + 靠谱商家推荐 + 闭口合同零增项参考** - 产品测评官

2026/6/17 23:29:04 查看详情
2026 武汉 5 家猫犬舍实地测评|江城湿热环境购宠首选伴西西 - 同城宠物优选基地

2026 武汉 5 家猫犬舍实地测评|江城湿热环境购宠首选伴西西 - 同城宠物优选基地

2026/6/17 23:27:02 查看详情
豫章师范学院怎么样?百年师范底蕴下的应用型人才培养新路(豫章师范学院是几本?) - 寻茫精选

豫章师范学院怎么样?百年师范底蕴下的应用型人才培养新路(豫章师范学院是几本?) - 寻茫精选

2026/6/17 23:27:02 查看详情
Matplotlib后端选错,图都显示不了?一份保姆级避坑指南,从原理到实战搞定TkAgg、Agg和Qt5

Matplotlib后端选错,图都显示不了?一份保姆级避坑指南,从原理到实战搞定TkAgg、Agg和Qt5

2026/6/17 0:00:53 查看详情
Linux服务器被入侵应急响应实战:隔离、取证、清理与加固

Linux服务器被入侵应急响应实战:隔离、取证、清理与加固

2026/6/17 0:03:07 查看详情
25级数应四班第八次实验

25级数应四班第八次实验

2026/6/17 0:03:07 查看详情
从Landsat到高分系列:手把手教你选择适合自己项目的遥感卫星数据

从Landsat到高分系列:手把手教你选择适合自己项目的遥感卫星数据

2026/6/17 16:21:19 查看详情
福州空调维修上门加氟移机空调不制冷、推荐本地老牌鑫盛达、冷顺安 - 我叫一

福州空调维修上门加氟移机空调不制冷、推荐本地老牌鑫盛达、冷顺安 - 我叫一

2026/6/17 16:06:28 查看详情
嵌入式调试器组件化界面与拖拽交互技术详解

嵌入式调试器组件化界面与拖拽交互技术详解

2026/6/17 16:15:44 查看详情
YOLOv11涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇| 引入CMGF 引导特征融合机制,实现对不同模态特征的自适应增强与高效融合,助力多模态目标检测,小目标检测或分割有效涨点

YOLOv11涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇| 引入CMGF 引导特征融合机制,实现对不同模态特征的自适应增强与高效融合,助力多模态目标检测,小目标检测或分割有效涨点

2026/6/17 21:10:37 查看详情
E-E-A-T 成第一权重:2027 年无经验内容将被彻底淘汰

E-E-A-T 成第一权重:2027 年无经验内容将被彻底淘汰

2026/6/17 21:10:30 查看详情
深圳福田园岭老小区搬家公司推荐 经验足师傅高效搬运攻略 - 从来都是英雄出少年

深圳福田园岭老小区搬家公司推荐 经验足师傅高效搬运攻略 - 从来都是英雄出少年

2026/6/17 21:06:50 查看详情

关于尧图

立足北京本地的一站式网站建设服务与设计教学平台,深耕企业网站定制开发、全网 SEO 优化及网络推广服务。

快速链接

  • 关于我们
  • 建站服务
  • 案例展示
  • 资讯中心

服务项目

  • 企业官网定制
  • UI 界面设计
  • SEO 优化推广
  • 移动端适配

联系方式

电话:400-XXX-XXXX

邮箱:info@zskr.cn

地址:北京市朝阳区 XXX 路 XX 号

© 2026 尧图网络科技 版权所有 | 京 ICP 备 XXXXXXXX 号