PPT 文件結構解析

首發於https://zhuanlan.zhihu.com/p/90699919
背景:將設計師使用 Photoshop 製作的模板素材,經過解析後上傳到 Web,用戶可以下載生成一個.pptx後綴名的演示文稿.

將一個 PPTX 文件解壓後會得到一個文件夾,裏面就是與這個演示文稿 相關的所有內容。反之,想要生成一個 .pptx 就可以初始化一個 ZIP,按照格式寫入所需內容,最後壓縮,加上名稱和後綴名,就完成了。所以最主要的還是來了解一下 PPTX 的文件結構到底是怎樣的。

官方文檔: officeopenxml

image

文件的類型和數目可能會根據 幻燈片 的內容有所不同,但是肯定會有一個[Content_Types].xml,至少一個.rels 和一個 presentation,當然至少得有一頁內容吧,而相應的就會有 slideMaster 和 slideLayout.

先來看看主要的幾個文件裏裝了什麼東西。

Content Types

定義了所有幻燈片裏用到的格式和內容,簡單的說就是所有文件都要提前聲明。格式一般是:

<Default Extension="jpeg" ContentType="image/jpeg"/>
<Override PartName="/ppt/slides/slide1.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml"/>

爲了簡單,其他的可能存在的格式可以都寫上,比如圖片、視頻、字體等,只有 slide 是不確定的。

Relationships

爲了方便各種資源的引用,所以會有關係表,格式爲:

<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml" />

Id 就是在其他地方引用的標識符,Type 一般是個鏈接,Target 就是資源存在的位置

基本每個部分都有這樣一個表,slidesslideMastersslideLayouts文件夾下面都有一個_relspresentation.xml 也有對應的 presentation.xml.rels

Presentation

包含了構成 PPTX 的各種規範以及屬性,比如嵌入字體,默認字體樣式,備註,分辨率,過渡動畫等。

Slides

這裏存儲的就是幻燈片具體的內容了

Slide: 包含一個單頁幻燈片的頁面內容
Slide Master: 包含母版幻燈片的所有文本、格式相關的定義
Slide Layout: 包含幻燈片模板的默認格式

雖然以前也做過 PPT,最喜歡網上找個模板直接套,這次終於知道了還有“幻燈片母版”這個東西,感覺到了其中的博大精深。

因爲我們的內容都是固定的,所以對於 slideLayoutslideMaster 就直接 copy 了一份,作爲固定內容,主要修改 slide 裏面的內容。

Slide 有很多屬性可以定義各種樣式,可以在官方文檔裏查看,都比較清楚。

實際業務中,除了文字,其他的類型,比如 svg,蒙版,各種特效都直接以圖片的形式替代,所以有時候會導致下載比較久。最容易出問題的就是 ID 的匹配,不能出現重複的 ID

總的來說,如果要實現什麼效果不知道怎麼下手的話,只要自己動手在 PPT 裏實現一下,解析出來研究看看文件結構,就知道怎麼做了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章