在C#中使用Spire.Agent.Office实现电子卷宗自动化归档管理
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

在C#中使用Spire.Agent.Office实现电子卷宗自动化归档管理

在法院、律所与合规部门中,电子卷宗归档是一项高频却繁琐的工作。一个案件的材料往往分散成几十份 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 材料,产物则是一份新生成的登记表 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 生成的《归档登记表》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;