在法院、律所与合规部门中,电子卷宗归档是一项高频却繁琐的工作。一个案件的材料往往分散成几十份 PDF——起诉状、证据清单、庭审笔录、判决书等,来源不同、页数各异,归档时需要把这些零散材料整理成一份符合规范的卷宗;整理完成后,还要再填一份归档登记表,逐项写明卷内材料名称、形成日期与页数,供入库和日后检索使用。
传统做法是在多个工具之间来回切换:先逐份打开文件判断材料类型、按卷内常规顺序手工拖拽合并,再手工敲一份封面和目录,最后用图像工具分别加页码、盖水印、设密码;等到要出登记表时,又得把每份材料再打开一遍,手工抄录材料名称和页数。几十份材料下来,既耗时又容易抄错或漏项。
Spire.Agent.Office 的 PDF AI 能力可以直接用自然语言描述归档要求,AI 智能体理解后自动完成两类工作:把散材料整理成规范卷宗,以及把卷宗信息提取成归档登记表。
对比传统 SDK API 处理
| 传统 Spire.Office for .NET API | Spire.Agent.Office 处理 | |
|---|---|---|
| 驱动方式 | 编写循环遍历文件 + 编排卷内顺序 + 合并 + 盖章 + 加密的完整代码,控制每一步 | 用自然语言描述归档要求,AI 理解后自动编排执行路径 |
| 代码量 | 整卷归档通常需要 300-500 行 C# 代码(含文件枚举、顺序编排、页面合并、封面目录生成、页码绘制、水印生成、加密参数、登记表读取等) | 约 10 行调用代码 + 1 条自然语言指令 |
| 需求变更 | 改动编排顺序/水印样式/登记表字段 → 改代码 → 编译 → 重新部署 | 修改指令,即刻生效 |
本文介绍如何使用 Spire.Agent.Office PDF AI 能力完成电子卷宗归档。全文通过两个案例展示"整理卷宗"与"登记卷宗"两种典型用法:
有关产品安装和 SpireToken 配置,请参考 在 .NET 项目中集成 Spire.Agent.Office。以下示例默认已安装 Spire.Agent.Office 并完成 SpireToken 配置。
案例一:卷宗整卷合成归档
一个案件的材料种类相对固定,但份数和页数都不确定:起诉状、证据清单、庭审笔录、判决书等,每类材料可能有多份,页数也各不相同。归档时不仅要按卷内约定俗成的顺序把它们拼成一卷,还要为卷宗补上封面与目录、让整卷具备贯通全卷的连续页码和统一的案号标识,并在移交或保存时加密,避免材料外泄。手工完成这条链路需要在多个工具间反复切换,材料一多就极易出现顺序错乱、页码接不上或漏加密的情况。
以下示例使用 Spire.Agent.Office 智能体,通过自然语言指令读取附件中的全部 PDF 材料,按卷宗文件的一般顺序合并为一份卷宗,自动生成封面页与目录页,删除各材料原有的页码并统一添加连续页脚,再加盖案号水印、设置打开密码:
using Spire.Agent.Office.AI;
using Spire.Agent.Office.Extensions;
using Spire.Pdf;
// 待整卷的 PDF 材料所在文件夹:将该文件夹下的全部 PDF 文件作为附件处理
string attachmentDir = @"E:\case_files"; // 同一案件的 PDF 材料所在文件夹
string[] attachmentPaths = Directory.GetFiles(attachmentDir, "*.pdf");
// PDF 处理相关配置
string inputPath = ""; // 输入文件为空,全部待归档材料均位于附件中
string savePath = null; // 结果文档路径
string OutDir = @"E:\output"; // 输出目录(合并加密后的卷宗将保存到此目录)
string key = "**************************"; // SpireToken Key
string instruction =
"读取附件中的全部 PDF 卷宗材料,完成整卷归档:" +
"1. 按照卷宗文件的一般顺序将全部材料合并为一份卷宗 PDF,并根据内容生成封面页与目录页;" +
"2. 删除原文件页码,并为合并后的卷宗统一添加连续页脚,页脚居中显示'第 X 页 / 共 Y 页',页码字号小于正文且不遮挡原有内容;" +
"3. 在卷宗每一页添加案号水印'CASE-2026-0001',水印呈45度斜向、浅灰色,不影响正文阅读;" +
"4. 为该卷宗 PDF 设置打开密码'2026@Case0001',该密码仅用于限制文档打开,不影响打印、复制等原有功能;" +
"5. 添加目录页并保持各份材料原有的布局、字体和页面设置;" +
"最终输出保存为PDF文件";
// 调用PDF文档处理函数
AIResult result = ExecuteDemoPDF(instruction, inputPath, savePath, key, OutDir, attachmentPaths);
// 执行PDF文档AI处理
static AIResult ExecuteDemoPDF(string instruction, string inputPath, string savePath, string key, string output, string[] attachmentPaths)
{
// 创建AIOptions选项配置对象
AIOptions options = new AIOptions();
options.WorkDir = output; // 设置工作目录为输出目录
options.SpireToken = key; // 设置SpireToken Key
// 使用PdfDocument对象处理PDF文档
using (PdfDocument pdf = new PdfDocument())
{
// 输入文件为空时不加载文档,全部处理对象来自附件
if (!string.IsNullOrEmpty(inputPath) && File.Exists(inputPath))
{
pdf.LoadFromFile(inputPath);
}
// 创建AI文档处理器
AIDocumentProcessor processor = pdf.AI(options);
// 执行AI指令
return processor.ExecuteInstruction(pdf, instruction, savePath, attachmentPaths);
}
}
待整卷的 PDF 卷宗材料
按顺序合并并添加页码水印后的加密卷宗

案例二:卷宗材料信息提取与归档登记表
卷宗整理完成后,还需要一份《归档登记表》随卷入库。登记表要逐项列明卷内每份材料的名称、形成日期和页数,并在表头写明案号、当事人与案由。这些信息其实都藏在材料本身里,但传统做法只能靠人工逐份打开、逐项抄录——材料一多,抄错页码或写错日期几乎难以避免。
与案例一不同,本案例不改动任何页面,只做信息读取:输入同样是附件中的 PDF 材料,产物则是一份新生成的登记表 PDF。
以下示例使用 Spire.Agent.Office 智能体,通过自然语言指令读取附件中的全部 PDF 材料,逐份提取案件基本信息与材料信息,按形成日期排序后汇总生成《归档登记表》:
using Spire.Agent.Office.AI;
using Spire.Agent.Office.Extensions;
using Spire.Pdf;
// 待登记的 PDF 材料所在文件夹:将该文件夹下的全部 PDF 文件作为附件处理
string attachmentDir = @"E:\case_files"; // 同一案件的 PDF 材料所在文件夹
string[] attachmentPaths = Directory.GetFiles(attachmentDir, "*.pdf");
// PDF 处理相关配置
string inputPath = ""; // 输入文件为空,全部待登记材料均位于附件中
string savePath = null; // 结果文档路径
string OutDir = @"E:\output-register"; // 输出目录(归档登记表将保存到此目录)
string key = "**************************"; // SpireToken Key
string instruction =
"读取附件中的全部 PDF 卷宗材料,提取信息并汇总生成'归档登记表':" +
"1. 从材料中提取案件基本信息:案号、原告、被告、案由;" +
"2. 逐份提取每份材料的材料名称、形成日期与页数;" +
"3. 按形成日期从早到晚对材料排序;" +
"4. 在输出目录生成一份 PDF 格式的'归档登记表',表格包含以下列:序号、材料名称、形成日期、页数、备注;" +
"5. 在表格上方列明案号、原告、被告、案由,在表格下方统计卷内材料份数与总页数;" ;
// 调用PDF文档处理函数
AIResult result = ExecuteDemoPDF(instruction, inputPath, savePath, key, OutDir, attachmentPaths);
// 执行PDF文档AI处理
static AIResult ExecuteDemoPDF(string instruction, string inputPath, string savePath, string key, string output, string[] attachmentPaths)
{
// 创建AIOptions选项配置对象
AIOptions options = new AIOptions();
options.WorkDir = output; // 设置工作目录为输出目录
options.SpireToken = key; // 设置SpireToken Key
// 使用PdfDocument对象处理PDF文档
using (PdfDocument pdf = new PdfDocument())
{
// 输入文件为空时不加载文档,全部处理对象来自附件
if (!string.IsNullOrEmpty(inputPath) && File.Exists(inputPath))
{
pdf.LoadFromFile(inputPath);
}
// 创建AI文档处理器
AIDocumentProcessor processor = pdf.AI(options);
// 执行AI指令
return processor.ExecuteInstruction(pdf, instruction, savePath, attachmentPaths);
}
}
生成的《归档登记表》PDF

常见问题
添加页码和水印后,会遮挡正文内容吗?
原因:页码与水印都是叠加在页面上的绘制层,位置或透明度设置不当确实可能压住正文。
解决:在指令中明确描述位置与样式即可(如"页脚居中显示页码""水印45度斜向、浅灰色"),AI 会按描述绘制。Spire.Agent.Office 在添加页码和水印时不会改动正文原有的布局、字体与页面设置。
卷内材料的合并顺序依据什么确定?
原因:案例一按卷内约定俗成的材料顺序编排(起诉状、证据清单、笔录、判决书等),案例二则按材料的形成日期排序。若材料类型不常见、或缺少可识别的形成日期,编排结果可能不符合预期。
解决:案例一可在指令中直接写明卷内顺序(如"按起诉状、证据清单、庭审笔录、判决书的顺序编排");案例二需确保材料中载明形成日期,对于确实缺项的材料补充兜底规则(如"未标注日期的材料排在末尾,备注列标注'日期待补'")。
获取 SpireToken Key
- 联系 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。或访问 https://www.e-iceblue.com/TemLicense.html获得试用/商业 API 密钥
在代码中配置:
AIOptions options = new AIOptions();options.SpireToken = key;









