aardio 文档

页码、超链接、编号与外观细节

以下能力需要 fsys.openXml 0.10.0+。生成器直接写入原生 DrawingML/PresentationML,不启动 Office、不访问链接。完整五页演示:~/examples/File/OpenXML/pptx-details.aardio。

页码字段

import fsys.openXml.pptx.builder;
var slides=[
    {slideNumber=false;shapes=[{placeholder="title";text="封面"}]},
    {shapes=[{x=60;y=80;width=700;height=90;paragraphs=[{
        runs=[{text="当前页:"},{field="slideNumber"}]
    }]}]}
];
return fsys.openXml.pptx.builder.write("/numbered-pages.pptx",slides,{
    firstSlideNumber=0;
    slideNumber={suffix=" / 2";color="59717E"}
});

点击超链接

shape.hyperlink 用于整个 text/shape/image;runs 中的 hyperlink 仅作用于该段文字,也支持表格单元格运行。暂不支持整表点击、鼠标悬停动作、文件/程序/宏动作。

输入 行为
"https://www.aardio.com" 外部网页,等价 {url="..."}
{url="mailto:hello@example.org"} 邮件链接;仅由用户点击时交给应用处理
{slide=3} 跳到本次生成的第3页;使用内部 slide 关系,不是依赖标题文字的地址
{action="first"} 跳到首页
{action="previous"/"next"/"last"} 上页、下页、末页
{action="back"} 返回上一次观看的页面(由播放应用维护历史)
{action="end"} 结束放映

url/slide/action 三者只能指定一项;表中可加 tooltip 提示文字。slide 从1开始(与 firstSlideNumber 无关),必须在文稿范围内。内部关系在 editor 重排时仍指向原页面,而不是重排后的同一页码。

外链仅允许 http/https/mailto;不下载、不跟随、不校验网络可达性。空白/控制字符应由调用者按 URL 百分号编码,生成器只做 XML 转义,不把已有的 %20 等再编码。拒绝相对文件路径、UNC、file、javascript 与其他动作协议。对生成的 PPT 手动点击外链仍可能打开浏览器/邮件程序,受应用自身安全设置控制。

不自动改变文字颜色。需要常见链接样式时显式指定 color 与 underline=true(文本/段落/运行支持布尔 underline,可用 false 清除)。形状点击与局部文字点击分别写入,后者不会延伸到段落结束/软换行标记。

import fsys.openXml.pptx.builder;
var slides=[{shapes=[
    {kind="shape";name="Next";x=60;y=80;width=220;height=70;
        text="下一页";color="FFFFFF";align="center";valign="center";
        hyperlink={slide=2;tooltip="进入内容页"}},
    {x=60;y=190;width=600;height=70;paragraphs=[{runs=[
        {text="查看 "},{text="aardio 官网";color="2468B4";
            underline=true;hyperlink="https://www.aardio.com"}
    ]}]}
]},{shapes=[{x=60;y=80;width=300;height=70;text="回到首页";
    hyperlink={action="first"}}]}];
return fsys.openXml.pptx.builder.write("/linked-pages.pptx",slides);

原生编号列表

在段落上指定 numbering=true(arabicPeriod)、类型字符串或 {type,startAt};不能与 bullet 同时启用。

支持12种:arabicPeriod/arabicPlain/arabicParenR/arabicParenBoth、alphaLcPeriod/alphaUcPeriod/alphaLcParenR/alphaUcParenR、romanLcPeriod/romanUcPeriod/romanLcParenR/romanUcParenR。

import fsys.openXml.pptx.builder;
var slides=[{shapes=[{x=60;y=80;width=780;height=300;fontSize=26;
    spaceAfter=16;paragraphs=[
        {text="定义目标";numbering={startAt=3};marginLeft=60;hanging=40},
        {text='组织内容\v这一行仍属于同一项';numbering=true;marginLeft=60;hanging=40},
        {text="检查结果";numbering=true;marginLeft=60;hanging=40}
    ]
}]}];
return fsys.openXml.pptx.builder.write("/numbered-list.pptx",slides);

外阴影与圆角半径

import fsys.openXml.pptx.builder;
return fsys.openXml.pptx.builder.write("/shape-details.pptx",[{shapes=[{
    kind="shape";geometry="roundRect";cornerRadius=18;
    x=90;y=100;width=420;height=220;fill="FFFFFF";
    lineColor="D8E5E8";text="可编辑的原生卡片";
    color="193546";align="center";valign="center";
    shadow={blur=8;distance=4;angle=90;opacity=0.15}
}]}]);

验证范围

本机 PowerPoint 验证了真实连续编号、链接关系/内部跳转、移动页面后页码更新、自定义圆角、阴影属性与图片导出;SDK检查结构。新功能尚需按实际使用的WPS版本手动验收,不把旧演示的成功扩大成所有新功能均已验收。

此前 pptx-show.aardio 的逐段落/Morph/标准版式演示,用户已于2026年10月8日在两台电脑的WPS中验证播放与排版正常;版本号未提供。旧演示数据未改,本轮对其生成部件做了逐字节回归。

Markdown 格式