在企业培训、在线课程与学术分享场景中,把一份教案做成"图文并茂、带语音讲解"的讲解视频,通常需要动用演示文稿、图片处理、音频合成、视频编码等多个工具链。使用 Spire.Agent.Office 的 AI 能力,您只需上传 Word、PDF、Excel、Markdown 等格式教案文档,通过简单的自然指令即可获得一段完整的讲解视频。
对比传统SDK API处理
| 传统 Spire.Office for .NET API | Spire.Agent.Office 处理 | |
|---|---|---|
| 驱动方式 | 分别解析教案文档、逐页排版生成Presentation、使用api和ffmpeg 转Presentation 到 MP4 | 自然语言描述目标,AI 理解自动编排执行 |
| 代码量 | 需要大量代码处理,并且不能添加语音 | 简单自然语言指令 |
| 多格式解析 | 每种格式(Word/PDF/Excel/Markdown)需单独编写解析逻辑 | AI 自动识别文档格式并读取内容 |
| 需求变更 | 调整主题、页数、语种或讲解风格 → 改代码 → 编译 → 重新部署 | 修改指令,即刻生效 |
从教案文档到讲解视频:
有关产品安装和 SpireToken 配置,请参考 在 .NET 项目中集成 Spire.Agent.Office。以下示例默认已安装 Spire.Agent.Office 并完成 SpireToken 配置。
第一步:从教案文档到Presentation
使用 Spire.Agent.Office 自动提炼核心要点生成排版精美的Presentation。
using Spire.Agent.Office.AI;
using Spire.Agent.Office.Extensions;
using Spire.Presentation;
// 加载 Word、PDF、Excel、Markdown 4种教案文档
List<string> inputPaths = new List<string>
{
@"AI应用类教案.docx",
@"学术论文类.pdf",
@"金融分析类.xlsx",
@"医疗政策类.md"
};
string outputDirectory = @"E:\output\";
string key = "**************************";
// 提炼教案核心要点生成教学Presentation。
string instruction =
"提炼教案核心要点生成PPT,1.保证排版布局效果 2.有相应图例图表效果 3.使用简约的风格 4.生成12页;" +
"排版硬性要求:幻灯片使用16:9宽屏尺寸;同一页内任何文字/形状/图表之间不得相互重叠或遮挡,图表图例与标注不得压住正文;" +
"所有内容必须完整落在幻灯片画布内,不得超出边界或被页面裁切,背景装饰图形也要完整位于页面内、不要在页面边缘绘制被页面裁切的半截图形(仅允许铺满整页的底色块贴边);" +
"标题、正文、图表分区排布并留足页边距与间距;文字根据文本框容量控制字号与行数,确保整段文字完整显示、不截断、不溢出文本框(必要时把自动缩小字号开启或用自动调整);" +
"每页元素数量适度、留白充分。卡片或分区内若含多条并列内容,标题与各条目一律顶部对齐并自上而下依次排布,标题不要垂直居中于整块区域、不要把标题文字与并列条目放在同一水平位置。" +
"保存前请逐页自查,发现重叠或越界的元素当场调整;" +
"教案中的表格内容请以要点列表或图表形式呈现,不要生成原生的PPT表格;" +
"合理分页,不要生成空白幻灯片;最终保存输出为PPTX格式。" +
"注意:源文档只需读取一次,识别内容后一次性生成完整PPT并保存,不要反复读取同一文档、不要反复编译重试,避免浪费token导致任务熔断。";
// 依次根据Word、PDF、Excel、Markdown 4种教案文档生成Presentation文档
foreach (string inputPath in inputPaths)
{
if (!System.IO.File.Exists(inputPath)) continue;
string savePath = System.IO.Path.Combine(outputDirectory,
$"{System.IO.Path.GetFileNameWithoutExtension(inputPath)}.pptx");
GeneratePPT(inputPath, instruction, savePath, key);
}
// AI 生成PPT处理
static PPTGenerationResult GeneratePPT(string input, string instruction, string savePath, string key)
{
//AIOptions选项配置
AIOptions options = new AIOptions();
//配置SpireToken
options.SpireToken = key;
//配置超时时间
options.TimeoutMs = 1000000;
//如果处理文档内容较长,可自定义配置token 熔断,默认是300w 熔断
options.TokenCircuitBreakerLimit = 5000000;
using (Presentation ppt = new Presentation())
{
AIDocumentProcessor processor = ppt.AI(options);
return processor.GeneratePresentation(input, instruction, savePath);
}
}
第二步:从Presentation到视频
基于第一步Presentation文档,用一条"配上语音讲解"的指令,自动生成带语音旁白的 MP4 讲解视频。
using Spire.Agent.Office.AI;
using Spire.Agent.Office.Extensions;
using Spire.Presentation;
// 定义上一步生成的4个PPT源文件路径
List<string> inputPaths = new List<string>
{
@"AI应用类教案.pptx",
@"学术论文类.pptx",
@"金融分析类.pptx",
@"医疗政策类.pptx"
};
string outputDirectory = @"E:\output\";
string key = "**************************";
string instruction = "生成视频同时配上语音讲解";
// 循环处理每个PPT生成视频
foreach (string inputPath in inputPaths)
{
if (!File.Exists(inputPath)) continue;
string savePath = Path.Combine(outputDirectory,
$"{Path.GetFileNameWithoutExtension(inputPath)}.mp4");
ExecuteDemoPPT(instruction, inputPath, savePath, key, null);
}
// 执行PPT文档AI处理(生成带语音讲解的视频)
static AIResult ExecuteDemoPPT(string instruction, string inputPath, string savePath, string key, string[] attachmentPaths)
{
//AIOptions选项配置
AIOptions options = new AIOptions();
//配置SpireToken
options.SpireToken = key;
//配置超时时间
options.TimeoutMs = 1000000;
//配置token 熔断
options.TokenCircuitBreakerLimit = 5000000;
using (Presentation ppt = new Presentation())
{
if (!string.IsNullOrEmpty(inputPath) && File.Exists(inputPath))
{
ppt.LoadFromFile(inputPath);
}
AIDocumentProcessor processor = ppt.AI(options);
return processor.ExecuteInstruction(ppt, instruction, savePath, attachmentPaths);
}
}
Word格式文档---->Presentation文档------>.mp4语音视频
Pdf格式文档---->Presentation文档------>.mp4语音视频
Excel格式文档---->Presentation文档------>.mp4语音视频
markdown 格式文档---->Presentation文档------>.mp4语音视频

常见问题
生成的 PPT 页数与教案内容不匹配
原因:教案内容较多,AI 在提炼要点与分页时的取舍与预期不同。
解决:在指令中明确页数、如"生成9页、每页一个教学环节"。
结果生成失败
原因:源文档数据较多,分析处理消耗token大,超过默认token熔断限制。
解决:使用TokenCircuitBreakerLimit自定配置,如下:
AIOptions options = new AIOptions();
options.TokenCircuitBreakerLimit = 5000000;
多格式教案(Word/PDF/Excel/Markdown)都能转吗
原因:不同格式解析方式不同,用户不确定是否可用。
解决:Spire.Agent.Office 可自动识别附件文档格式并读取内容;直接传入对应格式文件并在指令中说明来源即可。
获取SpireToken Key
- 联系 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 或访问 https://www.e-iceblue.com/TemLicense.html 获得试用/商业 API 密钥
在代码中配置:
AIOptions options = new AIOptions();
options.SpireToken = key;







