使用 C# 轻松为 Word 文档添加数字签名

在折腾电子合同或正式报告时,给 Word 文档加上数字签名几乎是刚需------既能证明文档没被篡改,又能确认是谁签的。今天分享一个用C#快速搞定这件事的小办法,主角是 Free Spire.Doc for .NET 这个免费库,代码量很少,几分钟就能跑起来。

准备工作

  1. 安装 Free Spire.Doc

通过 NuGet 包管理器搜索 FreeSpire.Doc 并安装,或直接下载 DLL 引用。

  1. 准备数字证书

你需要一个有效的 .pfx 格式数字证书文件及对应的密码。certificate.pfx 是什么东西呢?简单说,它就是你的"数字身份证"。里面包含了你的公钥、私钥以及身份信息。.pfx 格式通常带有密码保护,你用这个文件给 Word 文档盖章,别人打开文档就能看到是谁签的,同时还能检验文档是否被改过。

你可以从 CA 机构(比如沃通、DigiCert 等)申请一个真正的商用证书,也可以本地自己生成一个测试用的------开发阶段用 makecert 或 OpenSSL 随便搞一个就行,只不过正式给别人看的时候 Word 会提示"签名无效"。

代码实现

下面是一个完整的控制台程序示例,演示加载 Word 文档、加载证书并签名保存。

复制代码
using Spire.Doc;

namespace DigitallySignWord
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 Document 对象
            Document doc = new Document();

            // 加载需要签名的 Word 文件
            doc.LoadFromFile("Input.docx");

            // 指定证书路径和密码
            string certificatePath = "certificate.pfx";
            string password = "password";

            // 数字签名并保存为 Docx2013 格式
            doc.SaveToFile("DigitallySigned.docx", FileFormat.Docx2013, certificatePath, password);
        }
    }
}

代码解析

  • 加载文档 :通过 Document.LoadFromFile 载入待签名的 .docx 文件。
  • 证书配置certificatePathpassword 分别指向证书文件路径和密码。
  • 保存签名SaveToFile 方法重载中指定输出格式(如 Docx2013)、证书路径和密码,即可在保存时完成签名。

签名完成后,用 Word 打开 DigitallySigned.docx,文档顶部会显示"签名行",状态栏提示"已签名的文档",签名详细信息可查阅"文件"->"信息"->"查看签名"。

重要提示

  1. 免费版限制 :免费版 Spire.Doc 对文档大小有限制:支持处理的 Word 文档 不超过 500 个段落或 25 个表格 (以先达到者为准)。对于大多数小型办公文档和合同,这一限制已足够使用。
  2. 证书有效性 :生产环境中请使用由受信任CA颁发的证书,否则Word会提示签名无效。
  3. 支持格式SaveToFileFileFormat 参数可选 Docx2010Docx2013Docx2016 等,请根据实际需要选择。
  4. 仅对新文件生效 :数字签名是在保存新文件时附加的,原文件不受影响。

总结

借助 Free Spire.Doc for .NET,只需几行代码即可在 C# 中为 Word 文档添加数字签名,非常适合批量处理合同、报告等文件的自动化场景。但务必关注免费版的段落/表格数量限制,避免运行时异常。如果需求超出限制,可评估商业许可或采用分治法。希望本文能帮助你快速上手文档签名功能!

相关推荐
慧都小妮子15 小时前
SciChart WPF v9.0 更新详解:矢量场图表、堆叠箱线图与 MVVM 轴同步来了
c#·.net·wpf·数据可视化·图表控件·图表
鱼听禅20 小时前
C#学习笔记-Entity Framework Core基础操作学习
c#·orm·ef core
Z59981784120 小时前
c#软件开发学习笔记--分组、游标与临时表、分页
笔记·学习·c#
rick97721 小时前
用 C# 从零搭建本地知识库:RAG 系统完整实战
c#
Z5998178411 天前
c#软件开发学习笔记--事务、索引
笔记·学习·c#
asdzx671 天前
使用 Spire.WordJS 在 React 中实现在线 Word 文档编辑
前端·react.js·word
geovindu1 天前
CSharp: Composite Pattern
开发语言·后端·c#·组合模式·结构型模式
LeoTao1 天前
C#专题-C# 异常处理
c#
影寂ldy1 天前
C# 多线程进阶知识点(线程优先级、多委托传参、线程锁、死锁)
开发语言·数据库·c#