Putting PPT slides in your pocket

A conversion tool to generate SVG slides from PPT files that can fit in your cell phone

Thomas Buck

Professor
Universidade Salvador DEAR - Departamento de Engenharia e Arquitetura


                            Salvador
                            Rua Ponciano de Oliveira, 126 - Rio Vermelho
                            

                            41.950-275
                            Brazil                           
                             ++55 71 3330-4654                             
                             ++55 71 3330-4630                           
                        

Thomas Buck teaches computer graphics for the computer science course and is coordinator of the computer engineering course.

Bernardo Camargo Silva

Jr. Java Programmer
CPM Braxis Application Outsourcing - FSW SSA


                           Salvador 
                            Av. ACM 3840 Ed. Capemi, 1 andar, bloco A - Pituba - Salvador Bahia
                            

                            41.820-902
                            Brazil                           
                             ++55 71 8861-8669                                                 
                        

Bernardo Camargo Silva recently graduated in the computer sciences course at Universidade Salvador and is working as a Jr. Java Programmer.


Table of Contents

Introduction
Description of the implementation
Some Examples
Conclusions and future work
Bibliography

Imagine the following scenario. For a typical discipline setting, the teacher makes some planning before the classes begin. When he goes to classroom, he wants to follow that planning. In this case, he has a few options: 1) he has to remember everything, i.e., he doesn’t need any other help except his memory; 2) he makes some written notes, and take those notes with him to class; 3) in the classroom, he has access to a PC with PPT presentation software; and 4) he has a mobile phone with Scalable Vector Graphics (SVG) presentation software. Let’s quickly analyze these options: 1) the teacher doesn’t like technology, so this paper is not for him; 2) the teacher has only one hardcopy of his classes, with all the known consequences – maybe he doesn’t like technology either; 3) he (or the institution) needs to buy a machine and pay for a license; and 4) voilá, the teacher goes to the classroom with his preferred cell phone. Nowadays presentation software for SVG format is free, the mobile phone itself is getting cheaper, and, of course, there are many cell phones capable of displaying SVG files [1]. That’s exactly the scenario were this project is inserted.

There are other advantages when using the SVG format. As it is a vector format, the presentation quality is not affected when viewed on portable devices, which have low resolution, like mobile phones. The size of the files is normally less than the PPT version of them, which is desirable in the case of using portable devices. And, as SVG is XML based, the files, once uploaded to the internet, can be searched based on their content. This is very useful when the teacher tries to find similar material, for example.

The conversion from PPT to SVG is done with open source software, and in the near future it will be easily executed with a web service. As a matter of fact, the teacher can create his classnotes in a software like Inkscape [2], which is free of charge and generates SVG files directly, but why do someone needs to learn another software interface if PPT software is well known and can be converted automatically? Similar arguments can be used against the approach shown in [3].

This paper will show how to build a conversion application which transforms a PPT file with N slides into a set of N SVG files, which is then transferred to the mobile phone. In other words, the teacher plans his classes at home, or somewhere else, and then uploads the content into his pocket. He is now ready to teach.

The implemented application, named PPT2SVG, was built under the Java platform using the open-source Eclipse Integrated Development Environment (IDE) [4]. This application is an option to convert Microsoft PowerPoint presentation files (PPT) into equivalent SVG files, which can be used as an alternative to the traditional slide presentation with the advantage of being a free and open-source W3C standard [5].

In order to provide its functionalities, the PPT2SVG uses an open-source framework called POI [6], a project under development by the Apache Foundation, which is a set of API’s to provide access to Microsoft 97-2003 format files, i.e. Word, Excel and PowerPoint files. In our case we are using a subproject of the major POI project, called HSLF [7], which is focused on providing access to the PPT format. This subproject is being used for the information extraction of PPT slide presentations, such as text and pictures, in order to generate SVG files with the same content of each PPT presentation slide.

Although the POI project as well as the HSLF subproject are still under development, both have many interesting features and therefore are extremely necessary for the content extraction used in the PPT2SVG application. The whole POI project is not capable of providing access to the new Microsoft Office 2007 format yet, but there are plans, by the Apache community, to develop these functionalities soon.

The conversion process by the PPT2SVG is simple: the HSLF subproject provides us a class called “HSLFSlideShow” that can be instanced with the desired PPT file in its parameter. With this class, we can create an instance of a more specific object, called SlideShow and invoke a “getSlides()” method, that will return every single slide of the presentation as a vector of “Slide” objects. The SlideShow class also provides us another important functionality, the extraction of all the images in the presentation, such as bullets and regular pictures.

With the vector of “Slide” objects returned by the SlideShow class, we can count how many slides are in the presentation and creates one SVG file for each slide of the vector. The Slide class provides some important methods for the PPT2SVG application; one of these methods (getTextRuns) returns all the texts in presented in the slide. The TextRun object may return another object (RichTextRun), which is responsible to distinguish the extracted texts that have different properties. For each different RichTextRun, we can gather the text with its properties, such as font name, size, color, position in screen, etc.

The part of the PPT2SVG responsible of reading the PPT files and making use of these classes mentioned above is the PPTReader class. This class implements the business of the PPT2SVG application and it is also responsible of the interaction within the client-side of the application and the POI API core.

The class structure of the application was divided in layers. These layers were separated by packages: the View, Control, and POI package. We used a few other design patterns [8] in the development of the PPT2SVG, for example the Builder pattern, which is represented by an interface responsible for signing the build methods. In other words, any class that implements this interface should implement all the available build methods. In our case we have specified a SVG Builder class, which is responsible for generating the SVG files by the information extracted from the PPT slides. The idea of the Builder pattern is that, in the future, we can implement a XML builder or a simple TXT builder just by modifying the core application slightly.

Another important design pattern we should mention is the Facade pattern, which provides an entry-point of the business part of the system, so the View class does not have to know all the functionalities of all the classes in the Control package, but just those who are defined by the Facade. The Facade class is responsible to know the functionality of all classes in the Control package and redirects to them any requisition sent by the View package. This is important so the whole application can change from a desktop program to a web application by simply changing the start class at the View package.

An example of the class structure of the PPT2SVG can be viewed in Figure 1.


The PPT2SVG project is currently under development, but there are already many results we can demonstrate. The first version of the PPT2SVG did not support image extraction, just basic text extraction with limited functionalities. This was due to the limited version of the POI API we were using.

By that time, we were able to extract all the texts and some limited information about them, such as font size, color and text type. An example of a simple PowerPoint conversion can be viewed in Figure 2 where in background runs an instance of the presentation file (.PPT format file) using the Microsoft PowerPoint 2007 software with the respective equivalent slides in the SVG format above them, running over Microsoft Internet Explorer 7.0 browser with the Adobe SVG Viewer plug-in [9].


The same example can be seen running at a mobile cell phone (Siemens CX65) in Figure 3. As can be seen, it was possible to apply zoom filters (zoom-in in the example).


These previous examples were based on an antique version of the POI API. The current version of the API, 3.1 FINAL, made possible the extraction of images and much more other properties, such as all the texts information, font name and attributes. An example of a PPT conversion by the PPT2SVG application using the POI API version 3.1 can be seen in Figure 4, where in the background one recognizes the Microsoft PowerPoint 2007 and in the foreground the respective SVG slide converted.


The converted SVG slides were tested on a mobile cell phone. This time we used a Nokia N95 mobile cell phone, which has native SVG support, to run the converted SVG file. The example is shown in Figure 5.


We started the PPT2SVG project as an open-source project and as such we are thinking of making it available through some web community, i.e. Source Forge, so online contributors can help the development and improvement of the application together. Having this in mind, we initiated the development of the application using a few design patterns and standards to improve the efficiency of the development, as we have just discussed.

There are, still, a lot to come along in future versions of the POI API, especially for the HSLF subproject, which is being used to gather information from the PPT files. In future versions of the PPT2SVG application, more functionality will be added and the application shall be improved along with the released versions of the POI API. Soon this project shall be released in some public community and hopefully more people will help us improve the PPT2SVG application.

One last piece of information: maybe in the near future cell phones will incorporate projector technology [10]. Can you believe that? How about telling those teachers in options 1 and 2, which we discussed in the beginning of this paper, that technology is indeed a very nice thing?