7
votes

I am using Office 07 PIA to convert the ppt into images in C#.

The slides are properly converted into images.

Now, while individual slides are converted into images, I was hoping for a workaround that could also convert the animations within slides too. I want to play these ppt [converted to images] in my custom application and not in MS PowerPoint.

I would really appreciate any help!

Thanks

3

3 Answers

12
votes

It's pretty simple:

Office 2002

using Microsoft.Office.Core;
using PowerPoint;

ApplicationClass pptApplication = new ApplicationClass();

Presentation pptPresentation = pptApplication.Presentations.Open("myfile.ppt", MsoTriState.msoFalse,
MsoTriState.msoFalse, MsoTriState.msoFalse);

pptPresentation.Slides.Item(1).Export("slide.jpg", "jpg", 320, 240);

Office 2003

using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;

ApplicationClass pptApplication = new ApplicationClass();
Presentation pptPresentation = pptApplication.Presentations.Open("myfile.ppt", MsoTriState.msoFalse,
MsoTriState.msoFalse, MsoTriState.msoFalse);

pptPresentation.Slides.Item[1].Export("slide.jpg", "jpg", 320, 240);

Image Output Quality

pptPresentation.Slides.Item[1].Export("slide.png", "PNG", 1024, 768);
3
votes

The question is difficult to understand.

However from what I gather you are trying to display PowerPoint Slides in your custom C# Application?

Solution 1:

Convert each PPT slide into HTML format (this should be possible from PowerPoint e.g. save as).

Drop a web-Browser component onto your application, and then simply point to the HTML file(s). You could even get the 'next' abd 'prev' buttons to go to the next 'slide' or bind it to mouse click.

As for videos, I'm not sure how exporting HTML from PowerPoint would handle this, you may be able to convert the Video to FLV, and imbed a basic FLV flash player into the HTML 'slide' file(s)

Extended Solution 1:

To deal with the animations (PowerPoint Fades etc) you could use this free product iSpring. This converts PPT to Flash (including animations and videos I believe). Which can then be embedded into a HTML file and played back on a web browser Component.

Edit 2: iSpring is no longer free

0
votes

you need to set this properties for this

-Right click package- Interop, in the solution explorer under your project References. -Click properties. -And there should be the option there for Embed Interop Assembly. -Set it to False

Code-

FileInfo objfile = new FileInfo(FileUpload1.PostedFile.FileName);
if (objfile.Extension.Equals(".pptx"))
{
    ApplicationClass pptApplication = new ApplicationClass();
    Presentation pptPresentation = pptApplication.Presentations.Open(objfile.FullName, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
    pptPresentation.Export(objfile.FullName, "jpg", Int32.Parse(pptPresentation.SlideMaster.Width.ToString()), Int32.Parse(pptPresentation.SlideMaster.Height.ToString()));
}