【前端】ikun-pptx編輯器前瞻問題二: pptx的壓縮包結構,以及xml正文樹及對應元素介紹

文章目錄

  • 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;一點小失誤都可能影響發動機性能甚至引發質量問題。過去新員…