Article by: MuthuKumar Arjunan and Vijayeta of Sonata Software Ltd.

This article explores the interoperable potential of the Open XML file formats. We will show how a simple browser on any client machine can create a PresentationML document (PPTX) on a web server. The browser provides the GUI, and the server software uses the .NET 3.0 System.IO.Packaging API to create the document.

The user can create slides, then drag and position them in his preferred order. Later he can create a downloadable power point file which comprises the slides he created, in the order he has specified.

The web page consists of text boxes to edit the contents of slide document to be created. When the user drags the slide, the vertical position of the slide is tracked and displayed in the text box on the screen, and another text box keeps the count of slides created.

The user is also provided with an editable text box to post the URL of the server, as shown:

The controls used here are HTML controls and the events are handled using Java Script.

The text boxes holding the slide contents can also be docked in the screen. For example, the first text box can be placed after the second text box, and the Presentation Document is created in the same slide order.

When the user is ready with the data that would form a presentation document,he clicks on the “Create PPT file” button. On-Click of the “Create PPT file”, the slide position, the Title and the SubTitles of each of the slides are sent to the server as an XML document, as shown:

Sending ...
<ROOT>
  <SLIDE Content="Enter the Content for Slide: 1" Header="Enter Slide Header:  1" pos="126" />
  <SLIDE Content="Enter the Content for Slide: 2" Header="Enter Slide Header: 2" pos="270" />
</ROOT>

At the server side, the XML document is processed, where in the Header and Content are separately stored and slides are created in the same order as the user wants, using .NET 3.0 System.IO.Packaging API.

The Presentation Document created is assigned a unique number series as name. The Server in turn returns a hyperlink of the URL from where the document can be downloaded to the local drive. On click of the link, the user is prompted to save it to the disk or open the document.

See the attached file for complete source code for the sample shown in this article.