aardio 文档

aardio 范例: PPTX 原生生成与动画

import win.ui;
/*DSG{{*/
var winform = win.form(text="PPTX 原生生成与动画";right=679;bottom=449)
winform.add(
button={cls="button";text="生成演示文稿";left=26;top=26;right=225;bottom=68;z=1};
open={cls="button";text="打开生成的 PPTX";left=242;top=26;right=441;bottom=68;disabled=1;z=2};
edit={cls="edit";left=26;top=92;right=652;bottom=421;anchors={left=1;top=1;right=1;bottom=1};edge=1;multiline=1;readonly=1;z=3}
)
/*}}*/
import fsys.openXml.pptx.builder;
var output=io.fullpath("/native-demo.pptx");
winform.edit.text='不需要 Office/WPS 即可生成 PPTX,包含可编辑文本、形状、表格、备注、动画和切换。\r\n播放动画、导出图片/PDF 请在 PowerPoint/WPS 中打开。\r\n默认不覆盖已有文件,重复生成请移走旧文件。';
winform.button.oncommand=function(){
    owner.disabled=true;
    thread.invoke(function(winform,output){
        import fsys.openXml.pptx.builder;
        var slides=[
            {name="Welcome";background="F2F5FC";notes="演示原生 PPTX 生成。标题点击淡入,卡片随后飞入。";
                transition={effect="fade";duration=0.7};
                shapes=[
                    {kind="text";name="Title";x=55;y=45;width=850;height=75;text="aardio × PPTX";fontSize=38;bold=true;color="15314F";animation={effect="fade";trigger="click";duration=0.6}},
                    {kind="text";name="Subtitle";x=58;y=130;width=830;height=70;text="无需 Office 生成,可用 PowerPoint 继续编辑";fontSize=23;color="4A6080"},
                    {kind="shape";name="Card";x=55;y=240;width=380;height=210;geometry="roundRect";fill="4472C4";text="生成 · 编辑 · 动画";fontSize=28;bold=true;color="FFFFFF";align="center";valign="center";animation={effect="fly";direction="left";trigger="after";duration=0.7}},
                    {kind="table";name="Table";x=480;y=245;width=390;height=195;fontSize=22;rows=[["能力","状态"],["文本 / 表格","可编辑"],["常用动画","已支持"]];cellFill="FFFFFF"}
                ]
            },
            {name="Animation";background="FFFFFF";notes="点击观看入场,之后强调旋转,再点击淡出。";
                transition={effect="push";direction="left";duration=0.6};
                shapes=[
                    {kind="text";name="Heading";x=55;y=45;width=850;height=70;text="常用整形状动画";fontSize=34;bold=true;color="15314F"},
                    {kind="shape";name="Badge";x=330;y=200;width=260;height=150;geometry="roundRect";fill="00A878";text="播放动画";fontSize=26;color="FFFFFF";align="center";valign="center";
                        animation=[{effect="zoom";trigger="click";duration=0.6},{effect="spin";angle=90;trigger="after";duration=0.7},{effect="fade";category="exit";trigger="click";duration=0.5}]
                    },
                    {kind="text";name="Footnote";x=55;y=425;width=850;height=55;text="进入放映:点击缩放入场 → 自动旋转 → 再次点击淡出";fontSize=20;color="4A6080"}
                ]
            }
        ];
        var path,err=fsys.openXml.pptx.builder.write(output,slides);
        if(path){
            winform.edit.text='生成成功:\r\n' ++ path ++ '\r\n\r\n2 页幻灯片、中文备注、表格、切换与 5 个动画效果。\r\n请进入放映模式观看;静态编辑视图显示最终文字/形状。';
            winform.open.disabled=false;
        }
        else winform.edit.text="生成失败:" ++ tostring(err);
        winform.button.disabled=false;
    },winform,output);
}
winform.open.oncommand=function(){raw.execute(output);}
winform.show();
win.loopMessage();

Markdown 格式