文章目录

  • PPTX文件本质:一个压缩包
    • 核心文件解析
      • 1. 幻灯片内容文件 (ppt/slides/slideX.xml)
      • 2. 元素类型解析
        • 文本框元素 (p:sp)
        • 图片元素 (p:pic)
    • 单位系统
    • 开发注意事项
    • 参考工具
    • pptx渲染路线图

PPTX文件本质:一个压缩包

PPTX文件实际上是一个遵循Open XML标准的ZIP压缩包,包含多个XML文件和其他资源。我们可以通过解压工具查看其内部结构:

pptx文件
├── [Content_Types].xml
├── _rels/
├── docProps/
│   ├── app.xml
│   ├── core.xml
│   └── thumbnail.jpeg
└── ppt/├── presentation.xml├── slides/│   ├── slide1.xml│   ├── slide2.xml│   └── ...├── slideLayouts/├── slideMasters/├── media/          # 存放图片等媒体资源├── theme/└── _rels/

可以看到,每一页幻灯片是一个独立的xml文件
而图片,可能以链接
在这里插入图片描述

核心文件解析

1. 幻灯片内容文件 (ppt/slides/slideX.xml)

每个幻灯片对应一个XML文件,包含以下关键结构:

<p:sld><p:cSld>       <!-- 幻灯片画布 --><p:spTree>   <!-- 形状树 --><p:sp>     <!-- 形状/文本框 --><p:nvSpPr>  <!-- 非可视属性 --><p:spPr>    <!-- 形状属性 --><p:txBody>  <!-- 文本内容 --></p:sp><p:pic>    <!-- 图片元素 --><p:nvPicPr><p:blipFill>  <!-- 图片填充 --><p:spPr></p:pic></p:spTree></p:cSld>
</p:sld>

2. 元素类型解析

文本框元素 (p:sp)
<p:sp><p:nvSpPr><p:cNvPr id="1" name="TextBox 1"/><p:cNvSpPr/></p:nvSpPr><p:spPr>  <!-- 样式属性 --><a:xfrm>  <!-- 位置/尺寸 --><a:off x="1524000" y="1524000"/><a:ext cx="2743200" cy="914400"/></a:xfrm><a:prstGeom prst="rect">  <!-- 预设形状 --><a:avLst/></a:prstGeom></p:spPr><p:txBody>  <!-- 文本内容 --><a:bodyPr/><a:p>      <!-- 段落 --><a:r>    <!-- 文本运行 --><a:rPr lang="zh-CN" sz="1800"/>  <!-- 文本属性 --><a:t>Hello World</a:t>  <!-- 文本内容 --></a:r></a:p></p:txBody>
</p:sp>
图片元素 (p:pic)
<p:pic><p:nvPicPr><p:cNvPr id="2" name="Picture 1"/><p:cNvPicPr><a:picLocks noChangeAspect="1"/></p:cNvPicPr></p:nvPicPr><p:blipFill>  <!-- 图片填充 --><a:blip r:embed="rId1"/>  <!-- 引用关系ID --><a:stretch><a:fillRect/></a:stretch></p:blipFill><p:spPr>  <!-- 样式属性 --><a:xfrm><a:off x="1524000" y="1524000"/><a:ext cx="2743200" cy="1828800"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></p:spPr>
</p:pic>

单位系统

PPTX中使用EMU(English Metric Unit)作为基本单位:

  • 1英寸 = 914400 EMU
  • 1厘米 = 360000 EMU
  • 1磅 = 12700 EMU

转换公式:

function emuToPx(emu, dpi = 96) {return Math.round((emu / 914400) * dpi);
}

开发注意事项

  1. 关系映射:所有资源引用都通过 ppt/_rels目录下的关系文件映射
  2. 媒体资源:图片存储在 ppt/media目录,通过 r:embed引用
  3. 样式继承:幻灯片会继承slideMaster和slideLayout中的样式
  4. 命名空间:XML中使用大量命名空间前缀,解析时需注意

参考工具

  1. Open XML SDK
  2. PPTX.js
  3. Office XML文档

下期预告:如何在前端实现PPTX的页面元素解析与渲染

pptx渲染路线图

在此,我们简单确定一个渲染路线图, 后续按照此顺序对 每一页的元素完成解析并进行还原度评估
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90524.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90524.shtml
英文地址,请注明出处:http://en.pswp.cn/web/90524.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式任务调度实战:XXL-JOB与Elastic-Job深度解析

告别传统定时任务的局限&#xff0c;拥抱分布式调度的强大与灵活 在现代分布式系统中&#xff0c;高效可靠的任务调度已成为系统架构的核心需求。面对传统方案&#xff08;如Timer、Quartz&#xff09;在分布式环境下的不足&#xff0c;开发者急需支持集群调度、故障转移和可视…

Windows 11下纯软件模拟虚拟机的设备模拟与虚拟化(仅终端和网络)

Windows 11下用GCC的C代码实现的虚拟机需要终端输入/输出&#xff08;如串口或虚拟控制台&#xff09;和网络连接&#xff0c;但不需要完整的硬件设备&#xff08;如磁盘、显卡、USB 等&#xff09;。在终端输入/输出方面&#xff0c;参考qemu的源代码&#xff0c;但不调用qemu…

CCF-GESP 等级考试 2025年6月认证Python六级真题解析

1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;第1题 下列哪一项不是面向对象编程&#xff08;OOP&#xff09;的基本特征&#xff1f;&#xff08; &#xff09;A. 继承 (Inheritance) B. 封装 (Encapsul…

C++中的deque

1. 什么是 Deque&#xff1f; 核心概念&#xff1a; Deque 是 “Double-Ended Queue”&#xff08;双端队列&#xff09;的缩写。你可以把它想象成一个可以在两端&#xff08;头部和尾部&#xff09;高效地进行添加或删除操作的线性数据结构。关键特性&#xff1a; 双端操作&am…

GNU到底是什么,与Unix和Linux是什么关系

GNU&#xff08;发音为 /ɡnuː/&#xff0c;类似“革奴”&#xff09;是一个自由软件操作系统项目&#xff0c;由理查德斯托曼&#xff08;Richard Stallman&#xff09;于1983年发起&#xff0c;目标是创建一个完全由自由软件组成的类Unix操作系统。它的名字是一个递归缩写&a…

双指针算法介绍及使用(下)

在上一篇文章中我们已经对双指针有了一定了解&#xff0c;接下来我们通过题目来对双指针进行更好的理解。 1. leetcode 202. 快乐数 这道题使用的方法是快慢指针&#xff0c; 比如说一个数X&#xff0c;那么创建两个变量X1和X2&#xff0c;然后X1每次变化两次&#xff0c;X2变化…

Elasticsearch整合:Repository+RestClient双模式查询优化

Elasticsearch整合&#xff1a;RepositoryRestClient双模式查询优化Elasticsearch 双模式查询优化&#xff1a;Repository RestClient 整合指南一、架构设计&#xff1a;双模式协同工作流二、Repository 模式&#xff1a;快速开发最佳实践2.1 基础配置2.2 高级特性&#xff1a…

Elasticsearch 高级查询语法 Query DSL 实战指南

目录 1、DSL 概述 1.1 DSL按照查询的结构层次划分 1.2 DSL按照检索功能的用途和特性划分 1.3 示例数据准备 2、match_all ——匹配所有文档 3、精确匹配 3.1 term——单字段精确匹配查询 3.2 terms——多值精确匹配 3.3 range——范围查询 3.4 exists——是否存在查询…

DNS 服务正反向解析与 Web 集成实战:从配置到验证全流程

DNS 服务正反向解析配置全流程指南 一、前言 在网络环境中&#xff0c;DNS&#xff08;Domain Name System&#xff09;服务起着至关重要的作用&#xff0c;它负责将域名解析为 IP 地址&#xff0c;以及将 IP 地址反向解析为域名。本文将详细介绍如何配置 DNS 服务的正反向解析…

2025.07.25【宏基因组】|PathoScope 安装与使用指南

PathoScope 安装与使用指南&#xff1a;微生物组数据分析利器 作为一名生物信息工程师&#xff0c;在微生物组数据分析中&#xff0c;我们常常需要高效、准确的工具来鉴定和量化样本中的微生物组成。PathoScope 正是这样一款强大的工具&#xff0c;它能够帮助我们从高通量测序…

AI结对编程:分布式团队的集体记忆外脑

AI结对编程:分布式团队的集体记忆外脑 “当新人通过AI瞬间掌握三年积累的业务规则时,传统‘传帮带’模式正式宣告过时——分布式团队最珍贵的资产不再是代码,而是被AI固化的集体经验。” 一、人脑的带宽困局 柏林新人加入新加坡支付团队,面临恐怖的知识迷宫: - …

栈----1.有效的括号

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; /** 括号特性: 左括号必定先出现,每个左括号都需要一个右括号与之匹配,后出现的左括号先匹配 解法: 依据后出现的左括号先匹配,很容易联想到栈,即后进先出 遍历字符串,遇到左括号就在栈中添加一个对应的右括号 遇到右括…

数据报表怎么自动填写内容?总结了几个方法

你有没有遇到过这种情况&#xff1f;月底赶销售报告&#xff0c;Excel里密密麻麻的数据要往Word里搬&#xff0c;光是复制粘贴就折腾半小时&#xff0c;好不容易搞完&#xff0c;老板突然说数据有更新…得&#xff0c;全白干&#xff01;更崩溃的是&#xff0c;这种重复劳动每个…

构造函数是否可以声明成虚函数?

构造函数&#xff08;constructor&#xff09;不能被声明为虚函数。✅ 原因解释 构造函数的主要职责是创建并初始化对象本身&#xff0c;而虚函数机制是基于 虚表指针&#xff08;vptr&#xff09; 的&#xff0c;它只有在对象构造完成之后才会起作用。 所以&#xff1a; 在构造…

【Rust线程池】如何构建Rust线程池、Rayon线程池用法详细解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

CAN总线网络的参数协同:从一致性要求到容差边界

CAN总线网络的参数协同&#xff1a;从一致性要求到容差边界 一、引言&#xff1a;CAN总线的“隐形契约”二、CAN通信的核心参数&#xff1a;不止于波特率三、参数一致性的必要性&#xff1a;为何波特率相同仍会失败&#xff1f;四、容差范围的科学界定&#xff1a;从理论计算到…

Activity 启动模式

如何指定 Activity 的启动模式&#xff1f;在 AndroidMainfest.xml 中通过给 <activity> 标签指定 android:lauchMode 来选择启动模式。4种启动模式standard&#xff08;默认&#xff09;&#xff1a;每当启动一个 Activity&#xff0c;都会创建一个新的实例压入返回栈。…

7·22胜算云AI日报:OpenAI再扩容且与英国政府签订三年AI计划、字节GR-3、微软Culture计划、国数局数据基地

OpenAI Oracle&#xff1a;4.5 GW「Stargate II」再扩容&#xff0c;AI 电力版图重排 7 月 22 日&#xff0c;OpenAI 与 Oracle 联合公布“Stargate II”计划&#xff1a;双方将在美国多地追加 4.5 GW 超算级电力与冷却配套&#xff0c;使 Stargate 系列园区总规模跃升至 5 GW…

【优选算法】链表

目录链表常用的技巧和操作1、常用技巧2、常用操作一、[两数相加](https://leetcode.cn/problems/add-two-numbers/description/)二、[两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/description/)三、[重排链表](https://leetcode.cn/problems/reor…

制造业新突破:AR 培训系统助力复杂操作轻松上手​

在制造业&#xff0c;生产设备复杂、操作流程繁琐&#xff0c;新员工掌握操作技能不易。比如汽车制造企业的发动机装配环节&#xff0c;涉及众多精密零部件安装&#xff0c;对安装顺序、位置精度要求严格&#xff0c;一点小失误都可能影响发动机性能甚至引发质量问题。过去新员…