做一份演示文稿,真正花时间的往往不是排版,而是"讲什么"。幻灯片上只放得下要点:几个短句、一组数字、一张图表,真正要讲出口的内容却全在作者脑子里。等到上台前一天,作者还要再把这份 PPT 从头读一遍,逐页回忆"这一页当时想说什么",然后补出一份讲稿。
更麻烦的是团队协作的场景。市场部的发布会材料由产品经理出内容、市场同事做页面、再由发言人上台,最后接手的人拿到的是一份只有要点的 PPT——他既不知道每页想强调什么,也不知道数据背后的结论,只能凭猜测临场发挥。备注页(Speaker Notes)本就是为了解决这个问题而存在的:它不会出现在投影画面上,只在演讲者视图里可见,是"作者写给讲者的话"。但现实中,几乎没有人有耐心逐页去填。
Spire.Agent.Office 的 PowerPoint AI 能力可以直接用自然语言描述"备注要写什么、讲稿要什么口吻",AI 智能体读懂每一页的标题与要点后,自动完成两类工作:为每一页补写演讲备注,以及把整份演示文稿展开成一份可以直接照读的 Word 讲稿。
对比传统 SDK API 处理
| 传统 Spire.Office for .NET API | Spire.Agent.Office 处理 | |
|---|---|---|
| 驱动方式 | 遍历幻灯片、取出文本框内容、再自行拼装文案并写回备注页,每一步都要编码 | 用自然语言描述备注与讲稿的写作要求,AI 理解后自动编排执行路径 |
| 代码量 | 需要 150-300 行 C# 代码(含幻灯片遍历、形状遍历、文本提取、备注页写入、字体与段落设置等) | 约 10 行调用代码 + 1 条自然语言指令 |
| 内容生成 | 需要自行接入大模型或手写文案模板,且难以兼顾每页的语境 | AI 直接理解每页要点,按页生成语境连贯的文案 |
| 版式处理 | 写入备注时容易破坏原有版式与占位符结构 | AI 自动保留原版式、字体与配色,只在备注栏追加内容 |
| 需求变更 | 调整语气、字数、讲稿格式 → 改代码 → 编译 → 重新部署 | 修改指令中的描述,即刻生效 |
本文介绍如何使用 Spire.Agent.Office 为 PowerPoint 演示文稿生成演讲备注与讲稿。全文通过两个案例展示"为已有 PPT 补写备注"与"把汇报内容整理成 Word 讲稿"两种典型用法:
有关产品安装和 SpireToken 配置,请参考 在 .NET 项目中集成 Spire.Agent.Office。以下示例默认已安装 Spire.Agent.Office 并完成 SpireToken 配置。
案例一:为演示文稿逐页生成演讲备注
最常见的情况是:PPT 已经定稿,页面版式和内容都不需要再动,缺的只是一份备注。PPT 文件为了便于观看者理解,每页只有标题与几行要点——重点落在哪里、数字背后是什么、这一页怎么接到下一页,都还留在作者的脑子里。备注栏从头到尾都是空的,而演讲备注要做的,正是把这一层交接出去:它是作者留给登台者的交代,说清这一页真正想讲什么、哪里该着重、又该如何自然地引到下一页。发言人需要的是每页一小段提示——不必长篇大论,但要够他拿着资料讲,而不是照着幻灯片念。手工补备注的代价在于"逐页思考":一页一页读过去,重新组织语言,写少了没提示作用,写多了又会变成照本宣科。页数少尚可忍受,几十页的年度汇报就难免草草了事。
以下示例使用 Spire.Agent.Office 智能体,通过自然语言指令逐页阅读幻灯片内容,为每一页生成可直接照读的演讲备注并写入备注栏:
using Spire.Agent.Office.AI;
using Spire.Agent.Office.Extensions;
using Spire.Presentation;
// PPT 处理相关配置
string inputPath = @"E:\product-launch.pptx"; // 待添加演讲备注的演示文稿路径
string savePath = @"E:\product_result.pptx"; // 结果文档路径
string key = "**************************"; // SpireToken Key
string instruction = "为这份输入PPT文件逐页生成演讲备注,写入每页的备注栏:" +
"1. 逐页阅读幻灯片标题与要点,理解该页要传达的信息;" +
"2. 为每一页撰写一段演讲备注,用演讲者口吻、可直接照读;" +
"3. 备注要说清这页的讲解重点,并自然过渡到下一页,备注需简繁有序,重要内容需详细说明,过渡页简单说明;" +
"4. 保持原有的幻灯片版式、字体、配色与页面顺序完全不变,不要增删任何幻灯片;" +
"最终输出保存为PPT文件";
// 调用PPT文档处理函数
AIResult result = ExecuteDemoPpt(instruction, inputPath, savePath, key);
// 执行PPT文档AI处理
static AIResult ExecuteDemoPpt(string instruction, string inputPath, string savePath, string key)
{
// 创建AIOptions选项配置对象
AIOptions options = new AIOptions();
options.SpireToken = key; // 设置SpireToken Key
// 使用Presentation对象处理PPT文档
using (Presentation ppt = new Presentation())
{
// 从文件加载PPT文档
if (!string.IsNullOrEmpty(inputPath) && File.Exists(inputPath))
{
ppt.LoadFromFile(inputPath);
}
// 创建AI文档处理器
AIDocumentProcessor processor = ppt.AI(options);
// 执行AI指令
return processor.ExecuteInstruction(ppt, instruction, savePath);
}
}
备注栏为空的原始演示文稿
逐页写入演讲备注后的演示文稿

生成后的演示文稿在投影画面上与原件完全一致,备注只出现在演讲者视图中。发言人打开演示者视图,就能在每一页下方看到该页的提示文案,按顺序念下来即可完成整场产品发布。
案例二:把汇报内容整理成可照读的 Word 讲稿
备注栏适合"提示",却不适合"照读"。备注以短句为主,字号小、位置偏,站在台上低头看备注既影响台风,也容易漏词。当场合更正式——例如季度经营汇报要向管理层逐项说明数据——讲者需要的是一份完整的、口语化的讲稿。讲稿的载体值得单独说明:演示文稿是给人看的,讲稿是给人读的。讲稿要控制字号、行距与分节,通常还要打印出来带进会场;用 PPT 承载每页几百字的正文,排版与阅读体验都不合适,投影出去更是把台词直接给了观众。所以本案例的输入仍是 PPT,输出是一份 Word 讲稿文档。
跨格式处理正是 Spire.Agent.Office 可以直接做的事:仍用 Presentation 加载演示文稿,由 AI 读取每页内容,再按指令把讲稿写成 Word 文件。因此本案例让 AI 先逐页"读进"数据,再按原页顺序分节写成讲稿:原演示文稿的每一页,对应讲稿文档中的一节,节标题沿用原标题,正文则是可以直接念出口的完整讲稿。
以下示例使用 Spire.Agent.Office 智能体,通过自然语言指令逐页解读数据并撰写讲稿,输出为 Word 文档:
using Spire.Agent.Office.AI;
using Spire.Agent.Office.Extensions;
using Spire.Presentation;
// PPT 处理相关配置
string inputPath = @"E:\quarterly-review.pptx"; // 输入演示文稿路径
string savePath = null; // 结果文档路径(此处为null,将使用下面设置的输出文件夹路径)
string OutDir = @"E:\output-script"; // 输出目录
string key = "**************************"; // SpireToken Key
string instruction =
"读取输入 PPT 文件,为 PPT 演讲者撰写完整的讲稿,输出为一份Word讲稿文档:" +
"1. 逐页阅读幻灯片上的数据与要点,理解该页的核心结论;" +
"2. 为每一页撰写一段完整、口语化的讲稿,可直接照读,内容简繁有序,讲稿要引用该页的具体数据,并说明数字背后的经营含义;" +
"3. 讲稿按原幻灯片顺序分节编排,每节以'第N页 + 原幻灯片标题'作为小标题,正文为该页讲稿全文;" +
"4. 正文排版便于朗读:字体清晰,字号不小于14磅,行距1.5倍,段间距适中;";
// 调用PPT文档处理函数
AIResult result = ExecuteDemoPpt(instruction, inputPath, savePath, key, OutDir);
// 执行PPT文档AI处理
static AIResult ExecuteDemoPpt(string instruction, string inputPath, string savePath, string key, string output)
{
// 创建AIOptions选项配置对象
AIOptions options = new AIOptions();
options.WorkDir = output; // 设置工作目录为输出目录
options.SpireToken = key; // 设置SpireToken Key
// 使用Presentation对象处理PPT文档
using (Presentation ppt = new Presentation())
{
// 从文件加载PPT文档
if (!string.IsNullOrEmpty(inputPath) && File.Exists(inputPath))
{
ppt.LoadFromFile(inputPath);
}
// 创建AI文档处理器
AIDocumentProcessor processor = ppt.AI(options);
// 执行AI指令
return processor.ExecuteInstruction(ppt, instruction, savePath);
}
}
生成的 Word 版讲稿文档

常见问题
想接入自己的模型或私有化部署,该改哪里
说明:默认情况下 AI 请求走 Spire 的模型服务。AIOptions 另外提供了 Model、BaseUrl 与 ApiKey 三个属性,分别用于指定模型名称、服务地址与访问密钥,改走自建或第三方推理服务时配置这三项即可。
AIOptions options = new AIOptions();
options.BaseUrl = "baseUrl";
options.Model = "modelName";
options.SpireToken = "*************";
options.ApiKey = "*************";
演示文稿页数一多,处理就很慢,甚至会超时
原因:生成备注和讲稿是逐页进行的,AI 需要反复读写文档,每次都要把已有内容重新送进模型。页数越多、单页文字越密,消耗的 token 增长得越快,整体耗时也随之拉长,默认的超时时间往往不够用。
解决:在创建 AIOptions 时显式设置 TimeoutMs(单位毫秒),给长文档留出足够的处理时间。如 50 页的 PPT 文件,TimeoutMs 的值可以给到 10 分钟(600000)。
获取 SpireToken Key
- 联系 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 或访问 https://www.e-iceblue.com/TemLicense.html 获得试用/商业 API 密钥
在代码中配置:
AIOptions options = new AIOptions();
options.SpireToken = key;







