Sanjeev
Sanjeev

Reputation: 1097

How can I display a PPT file in a Java Applet?

I want to open and display an existing Microsoft PowerPoint presentation in a Java Applet. How can I do that?

Upvotes: 3

Views: 3359

Answers (3)

Giuliano
Giuliano

Reputation: 133

Visualization can be done by visualizing each slide as a jpg image. You can use the Jacob java library for the conversion. This library expoits COM bridge and gets Microsoft Office Power Point to do the conversion (through save-as command). I've got PP2007:

package jacobSample;
import com.jacob.activeX.*;
import com.jacob.com.*;

public class Ppt {
ActiveXComponent pptapp = null;  //PowerPoint.Application ActiveXControl Object
  Object ppto = null;  //PowerPoint.Application COM Automation Object
  Object ppts = null;  //Presentations Set
  // Office.MsoTriState
  public static final int msoTrue = -1;
  public static final int msoFalse = 0;
  // PpSaveAsFileType
  public static final int ppSaveAsJPG = 17 ;


  //other formats..
  public static final int ppSaveAsHTML = 12;
  public static final int ppSaveAsHTMLv3 =13;
  public static final int ppSaveAsHTMLDual= 14;
  public static final int ppSaveAsMetaFile =15;
  public static final int ppSaveAsGIF =16;
  public static final int ppSaveAsPNG =18;
  public static final int ppSaveAsBMP =19;
  public static final int ppSaveAsWebArchive =20;
  public static final int ppSaveAsTIF= 21;
  public static final int ppSaveAsPresForReview= 22;
  public static final int ppSaveAsEMF= 23;

  public Ppt(){
    try{
         pptapp = new ActiveXComponent("PowerPoint.Application");
      ppto = pptapp.getObject();

      ppts = Dispatch.get((Dispatch)ppto, "Presentations").toDispatch();

    }catch(Exception e){
      e.printStackTrace();
    }
  }
  public Dispatch getPresentation(String fileName){
    Dispatch pres = null; //Presentation Object
    try{
      pres = Dispatch.call((Dispatch)ppts, "Open", fileName,
        new Variant(Ppt.msoTrue), new Variant(Ppt.msoTrue),
        new Variant(Ppt.msoFalse)).toDispatch();
    }catch(Exception e){
      e.printStackTrace();
    }
    return pres;
  }
  public void saveAs(Dispatch presentation, String saveTo, int ppSaveAsFileType){
    try{
      Object slides = Dispatch.get(presentation, "Slides").toDispatch();
      Dispatch.call(presentation, "SaveAs", saveTo, new Variant(ppSaveAsFileType));
    }catch (Exception e) {
      e.printStackTrace();
    }

  }
  public void closePresentation(Dispatch presentation){
      if(presentation != null){
      Dispatch.call(presentation, "Close");
    }
  }
  public void quit(){
      if(pptapp != null){
      ComThread.Release();

      //pptapp.release();
      try{
      pptapp.invoke("Quit", new Variant[]{});
      }catch(Exception e){
          System.out.println("error");
      }
    }
  }
  public static void main(String[] args){
      //System.loadLibrary("jacob-1.15-M4-x86.dll");
      //System.loadLibrary("jacob-1.15-M4-x64.dll");

    Ppt a = new Ppt();
    System.out.println("start");
    Dispatch pres = a.getPresentation("C:\\j.pptx");// pptx file path 


    a.saveAs(pres, "C:\\im", Ppt.ppSaveAsJPG); // jpg destination folder

    a.closePresentation(pres);
    a.quit();
    System.out.println("end");
  }
 }

Upvotes: 1

tss
tss

Reputation: 57

I am not sure whether my idea of simulating PPT rendering works or not:

  1. Let the server side read the PPT file and generate JPG files for display.
  2. The browser side will use ajax to request for any specific page from the PPT.

Upvotes: 0

Henning
Henning

Reputation: 16311

Tonic Systems was selling a Java PPT renderer until they were bought by Google. I know of no other solution.

You could implement this yourself, of course, but that's going to be a lot of work. There is rudimentary support for reading and writing PPT files in the Apache POI project, but you will have to do all the rendering yourself.

Upvotes: 2

Related Questions