ai生成PPT的原理其实并不复杂,首先生成PPT大纲,然后将大纲填入PPT模板中。
大纲生成
大纲的生成流程如下:
- 生成标题
你是一个PPT制作专家。
请以【$subject】为主题,生成1个PPT的主标题和副标题,要求能吸引人的注意。
主标题和副标题之间使用一个换行进行分隔;不需要进行解释,只给出结果即可
- 生成章节
你是一个PPT制作专家。
我希望你使用markdown的格式根据```$subject```生成所有章节的大纲,并且请遵循以下要求:
1. 每一个章节分为章节名称和章节内容列表两部分。
2. 章节名称为一级标题,不少于3个章节。
3. 章节内容为二级标题,内容列表不少于3个。
4. 不要进行解释,只给出内容即可。
- 生成章节内容
你是一个PPT制作专家。
PPT的大纲为$chapters。
根据大纲,请将${chapters[i]}部分的内容进行适当的扩写,要求如下:
1. 内容符合主题要求,有条理;
2. 避免出现重复内容;
3. 使用换行进行分隔;
4. 不要进行解释,只给出内容即可。
注意事项:
ai生成的内容不稳定,在进行内容解析时,考虑多种情况;
PPT生成
PPT生成原打算使用flutter_pptx
和dat_pptx
库,但是flutter_pptx
生成的ppt文件在打开时会报错
并且flutter_pptx
的样式也不够多,无法满足个性化配置需求。
天无绝人之路,github上有开源项目 PptxGenJS,支持的配置类型非常丰富。
这是一个js项目,幸亏之前有做flutter调用js项目的经验,使用flutter_js
进行桥接,实现对js的调用。
测试
安装和相关的库后,进行简单的测试
async function generatePPT(outline) {
// 1. Create a new Presentation
let pres = new PptxGenJS();
// 2. Add a Slide
let slide = pres.addSlide();
// 3. Add one or more objects (Tables, Shapes, Images, Text and Media) to the Slide
let textboxText = "Hello World from PptxGenJS!";
let textboxOpts = { x: 1, y: 1, color: "363636" };
slide.addText(textboxText, textboxOpts);
slide.addText("BONJOUR - CIAO - GUTEN TAG - HELLO - HOLA - NAMASTE - 你好", {
x: 0,
y: 1,
w: "100%",
h: 2,
align: "center",
color: "0088CC",
fill: "F1F1F1",
fontSize: 24,
});
// 4. Save the Presentation
return await pres.write("base64");
}
generatePPT('$outline');
PPT可以正常打开并且内容正确,后续将时使用此方案来实现相关功能。
关注【元助手AI】公众号,获取更多教程。