在企业培训、在线课程与学术分享场景中,把一份教案做成"图文并茂、带语音讲解"的讲解视频,通常需要动用演示文稿、图片处理、音频合成、视频编码等多个工具链。使用 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 =
"将附带的教程文档视为处理目标:提炼人工智能应用教程的核心要点,涵盖基础知识、典型应用领域、实施步骤、真实案例和前景。主题:使用冷静的专业灰蓝色作为主题色(干净、极简、现代AI技术感)。1.确保高质量的布局和排版。包括适当的说明性图表/图3。保持干净、简约的风格。生成12张幻灯片;";
// 依次根据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;









