PresentationML(PPTX,XML)

關於 PresentationML

PresentationML 是一個用於演示文件的 XML 為基礎格式族的名稱。Office OpenXML(OOXML)是 Microsoft Office 2007 應用程式引入的 XML 為基礎格式。Office OpenXML 是用於多種專門化 XML 為基礎標記語言的容器格式。PresentationML 是 Microsoft Office PowerPoint 2007 用於儲存其文件的標記語言。

Aspose.Slides for C++ 中的 PresentationML

OOXML PresentationML 文件以 PPTX 檔案形式存在,這些檔案是遵循 OOXML ECMA-376 規範的壓縮 XML 套件。Aspose.Slides for C++ 廣泛支援建立、讀取、操作與寫入 PresentationML 文件。此外,Aspose.Slides for C++ 能夠將 PresentationML 文件匯出為不同廣泛使用的文件格式,如 PDF、TIFF 與 XPS。之所以能夠做到這一點,是因為 Aspose.Slides for C++ 的設計目標是完整處理演示文件,而 PresentationML 基本上以壓縮 XML 套件的形式保存文件的內部結構。

PresentationML 是開放的,為何要使用 Aspose.Slides for C++

由於 PresentationML 基於 XML,完全可以使用 XML 類別自行建立處理與產生 PresentationML 文件的應用程式,而無需依賴像 Aspose.Slides for C++ 之類的第三方類別庫。然而,在處理 PresentationML 文件時,使用 Aspose.Slides for C++ 相較於純 XML 類別仍具備多項優勢。

OOXML 規範篇幅龐大,達數千頁之多。這意味著,要正確處理 PresentationML 文件,您必須投入大量時間與精力來了解此類文件的格式。相對地,使用 Aspose.Slides for C++ 時,只需使用相關類別及其相應的方法/屬性即可執行操作,而若用 XML 類別實作則相當複雜。

以下列出一些在透過 XML 類別處理 PresentationML 文件時甚至無法使用的功能:

  • 將 PPT 文件匯出為 PDF、TIFF、XPS 格式
  • 將 PPT 文件中的投影片匯出為 SVG 格式
  • 將投影片渲染為 C++ 框架支援的任何圖像格式
  • 使用複製功能自動從來源簡報複製母片
  • 對圖形套用保護

讓我們以一個僅有單一投影片且包含一個文字方塊,內有「Hello World」文字的 PresentationML 文件為例。若要透過 XML 類別讀取該文字,您必須編寫程式以從以下片段中解析此簡單文字:

範例


 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">

  <p:cSld>

    <p:spTree>

      <p:nvGrpSpPr>

        <p:cNvPr id="1" name=""/>

        <p:cNvGrpSpPr/>

        <p:nvPr/>

      </p:nvGrpSpPr>

      <p:grpSpPr>

        <a:xfrm>

          <a:off x="0" y="0"/>

          <a:ext cx="0" cy="0"/>

          <a:chOff x="0" y="0"/>

          <a:chExt cx="0" cy="0"/>

        </a:xfrm></p:grpSpPr><p:sp>

          <p:nvSpPr><p:cNvPr id="4" name="TextBox 3"/>

          <p:cNvSpPr txBox="1"/>

            <p:nvPr/>

          </p:nvSpPr>

          <p:spPr>

            <a:xfrm>

              <a:off x="2819400" y="2590800"/>

              <a:ext cx="1297086" cy="369332"/>

            </a:xfrm>

            <a:prstGeom prst="rect">

              <a:avLst/>

            </a:prstGeom>

            <a:noFill/>

          </p:spPr>

          <p:txBody>

            <a:bodyPr wrap="none" rtlCol="0">

              <a:spAutoFit/>

            </a:bodyPr>

            <a:lstStyle/>

            <a:p>

              <a:r>

                <a:rPr lang="en-US"/>

                <a:t>Hello World

                </a:t>

              </a:r>

              <a:endParaRPr lang="en-US"/>

            </a:p>

          </p:txBody>

        </p:sp>

    </p:spTree>

  </p:cSld>

  <p:clrMapOvr>

    <a:masterClrMapping/>

  </p:clrMapOvr>

</p:sld>