iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 15
1
Modern Web

30天實作線上簡報播放機制系列 第 15

15 - 剖析投影片中的資訊

在取出母片中的資訊後,接下來要處理的是投影片。不過好像跳過了版面配置?這是有原因的...

跳過版面配置

版面配置其實是「幾乎」跳過,因為需要的資訊跟母片差不多,只要把place holder之外的圖形或圖片抓出來就可以。剖析的方式跟母片是一樣的。

在剖析投影片時,會再回頭參考版面配置中的圖形資訊

剖析投影片

接下來就會直接剖析投影片。這部份會比較複雜:

  1. 圖形:如果是從母片開始一脈相承的圖形元件例如標題、內容文字等,都會有同樣的id。如果投影片使用這些預設的圖形,必須依序從母片取出相關資訊,然後用版面配置取出的資訊取代,最後用投影片裡面的資訊取代,這樣才能組合出完整的圖形資訊
  2. 列表樣式:
    1. 如果圖形沒有txBox屬性,那段落的樣式預設就是第一級的列表樣式,二到九級需要明確指定層級
    2. 簡報裡面有預設文字樣式的資訊,包含九級的列表樣式,母片中也有列表樣式的資訊。每個段落還有a:pPr的段落屬性。需要用母片的資訊取代過簡報的資訊,用a:pPr取代母片資訊的方式,決定段落的文字樣式

有了這些資訊,才能完整呈現圖形及文字。

目前剖析的結果

配合:node-pptx 執行的話,可以把媒體及剖析出來的json擋輸出。只要執行:

node node-pptx -m 1 [pptx檔案] [輸出目錄]

即可。不過上面回溯slideMaster及slideLayout還沒做,所以文字部分只有單純的文字內容。明天再把這部份完成。

另外,原本把slideMaster中的text style放在每個slide中,為了方便取用...不過打開main.json檔後發現...這部份佔據了頗大的空間,所以考慮還是把這部份的parser拆出來,不要放進slide裡面。

目前東西都還沒做好,所以node-pptx跟node-pptx-parser都只放在github上,不過在node-pptx的package.json中有把depency指向node-pptx-parser的github,所以透過npm install還是可以安裝,看看可以從powerpoint抓到什麼(測試用例還不夠完整,所以執行可能還是會出錯XD)。今天有點累,明天繼續奮鬥吧...


上一篇
14 - 剖析母片資訊
下一篇
16 - 文字呈現的細節
系列文
30天實作線上簡報播放機制31

尚未有邦友留言

立即登入留言