八荒启自主研发产品

玄武屏使用手册

融万物于一屏 · 以交互动画为魂,重塑演示的边界

89 章 · 持续更新

89
章节
4
版本
v1.0
产品最新版
参考

81. .xwp 文件格式

更新于 2026-10-30

.xwp 是玄武屏演示文稿的文件格式。本节是开发者参考——文件结构、字段定义、版本兼容性。

文件结构

.xwp 是一个 zip 压缩包:

my-deck.xwp/
├── manifest.json          ← 元信息(版本、标题、作者)
├── deck.json              ← 主结构(页面 / 元素 / 动画)
├── master.json            ← 母版定义
├── theme.json             ← 主题(颜色 / 字体)
├── notes.json             ← 演讲者备注
├── assets/                ← 嵌入的素材
│   ├── img-001.png
│   ├── video-002.mp4
│   ├── ggb-003.ggb
│   └── ...
└── refs.json              ← 外部资源引用(platform workIds)

manifest.json

{
  "version": "1.0",
  "format": "xwp",
  "title": "我的产品发布会",
  "author": "user-id-12345",
  "created": "2026-04-25T10:00:00Z",
  "modified": "2026-04-26T15:30:00Z",
  "description": "Q4 新品发布",
  "tags": ["产品", "发布会"],
  "industry": "enterprise",
  "language": ["zh", "en"],
  "checksum": "sha256:..."
}

deck.json

主结构:

{
  "canvas": {
    "width": 1280,
    "height": 720,
    "backgroundColor": "#ffffff"
  },
  "pages": [
    {
      "id": "page-001",
      "master": "master-default",
      "transition": { "type": "fade", "duration": 0.4 },
      "elements": [...],
      "background": { ... },
      "audio": null
    }
  ]
}

元素结构

每个元素的通用字段:

{
  "id": "el-001",
  "type": "text",
  "x": 0.10,
  "y": 0.20,
  "width": 0.80,
  "height": 0.10,
  "rotation": 0,
  "opacity": 1.0,
  "zIndex": 1,
  "locked": false,
  "hidden": false,
  "link": null,
  "animation": {
    "entrance": "fade-in",
    "trigger": "click",
    "order": 1,
    "duration": 0.4,
    "delay": 0,
    "easing": "ease-out"
  },
  "data": { /* 元素特定字段 */ }
}

各元素类型字段

text 元素

{
  "type": "text",
  "data": {
    "content": "标题文字",
    "fontSize": 48,
    "fontFamily": "思源黑体",
    "color": "#252422",
    "bold": false,
    "align": "left"
  }
}

image 元素

{
  "type": "image",
  "data": {
    "src": "assets/img-001.png",
    "alt": "产品图",
    "fit": "contain",
    "filters": { "brightness": 1.0, "contrast": 1.0 }
  }
}

ggb 元素

{
  "type": "ggb",
  "data": {
    "workId": "BGeo24100033",
    "ggbContent": "base64...",
    "viewState": "saved-base64...",
    "interactable": true,
    "reportVars": ["v0", "result"]
  }
}

html 元素

{
  "type": "html",
  "data": {
    "workId": "BHtml24050001",
    "props": { ... },
    "interactable": true
  }
}

formula 元素

{
  "type": "formula",
  "data": {
    "latex": "E = mc^2",
    "displayMode": "block"
  }
}

详见「11-21 元素详解」章节。

资源引用

内嵌资源

直接放在 assets/ 目录下,相对路径引用:

{ "src": "assets/img-001.png" }

平台资源(workId 引用)

不直接打包,运行时鉴权拉取:

{ "workId": "BGeo24100033" }

refs.json 记录所有 workId:

{
  "ggb": ["BGeo24100033", "BGeo24100034"],
  "html": ["BHtml24050001"]
}

版本兼容

major.minor 语义化版本:

升级 兼容
minor 升级(1.0 → 1.1) 新增字段,旧版客户端忽略未知字段,前向兼容
major 升级(1.x → 2.0) 结构性变更,自动迁移器逐步升级

自动迁移

旧版 .xwp 在新客户端打开时:

检测版本(manifest.version)
   ↓
低于当前 → 启动迁移器
   ↓
逐步升级:1.0 → 1.1 → 1.2 → ... → 当前
   ↓
保存为新版本(提示用户)

字符编码

  • 全部 UTF-8
  • 文件名 ASCII 安全(assets 内)
  • 字符串值任意 Unicode

文件大小限制

项 限制
总大小 ≤ 200MB
单文件(asset) ≤ 50MB
视频文件 ≤ 500MB(建议外链)
单页元素数 ≤ 200
总页数 ≤ 500

超出推荐用"按章节拆分"。

文件操作

解包查看

# .xwp 本质是 zip
unzip my-deck.xwp -d my-deck/
ls my-deck/

命令行工具

xwp-cli 提供:

xwp-cli inspect my-deck.xwp     # 查看结构
xwp-cli validate my-deck.xwp    # 校验完整性
xwp-cli upgrade my-deck.xwp     # 升级版本
xwp-cli export my-deck.xwp pdf  # 导出 PDF
xwp-cli optimize my-deck.xwp    # 优化资源

程序化创建

通过 API:

POST /api/xwp/create
{
  "title": "...",
  "deck": { ... }
}

详见「83. 开发者 API」。

兼容性

跨版本

新版编辑器可打开旧版 .xwp,自动迁移。 旧版编辑器打开新版 .xwp 时会警告"格式较新",部分字段可能丢失。

跨平台

  • Windows / macOS / Linux:完全一致
  • iPad / iOS:完全一致(编辑功能略简)
  • 网页 / 桌面客户端:完全一致

文件验证

打开 .xwp 时自动验证:

  • 结构完整性(必填字段)
  • 资源引用(assets 是否存在)
  • 校验和(checksum 防止文件损坏)
  • 版本兼容(自动迁移)

损坏修复

文件损坏时:

  • 自动尝试用历史版本恢复
  • 用户可手动选择"忽略错误打开"(部分内容可能丢失)
  • 客服技术支持(专业版起)

下一节讲错误码与诊断。