Преобразование Powerpoint в JPEG с помощью ASP.NET?

У меня есть клиент, которому нужно приложение, которое загружает файл powerpoint в веб-приложение, которое может отображать слайды в формате jpeg (или flash, silverlight, HTML, видео... в любом формате) с использованием ASP.NET.

Я создал приложение с MVC в VS 2010, используя инструменты разработчика Office, но на клиентском сервере нет Powerpoint, и кажется, что сборка Microsoft.Office.Interop.Powerpoint не будет работать, если она не может вызвать Powerpoint на хост-компьютере.

Я просмотрел все возможные обсуждения, посвященные этому, большинство приходит к выводу, что это плохая практика, даже если Powerpoint развернут на сервере, поэтому мой вопрос: знает ли кто-нибудь утилиту, которая может конвертировать слайд PPT в JPG или Flash или что-нибудь для презентации слайды на сайте?


person TonyMack    schedule 01.02.2013    source источник
comment
Interop — это более или менее .NET-эквивалент библиотеки типов в COM. Это как карточный каталог библиотеки. Он сообщает клиентскому приложению, что там есть и где это найти. Это не сами книги. MS не рекомендует автоматизировать приложения Office на сервере, но с осторожностью это можно сделать. PPT не позволяет создавать несколько экземпляров самого себя, поэтому вы должны представлять ему одну задачу за раз и не пытаться запускать другую задачу/экземпляр, пока не убедитесь, что первая завершена.   -  person Steve Rindsberg    schedule 02.02.2013


Ответы (2)


Вот это с использованием объекта Interop.

    private void mConvertPPT_To_Images(string sPPTFilePath, string sImagesDirectoryPath)
    {
        try
        {
            Microsoft.Office.Interop.PowerPoint.Application appPpt = new Microsoft.Office.Interop.PowerPoint.Application();
            Microsoft.Office.Interop.PowerPoint.Presentation objActivePresentation
                = appPpt.Presentations.Open(sPPTFilePath,
                                            Microsoft.Office.Core.MsoTriState.msoCTrue,
                                            Microsoft.Office.Core.MsoTriState.msoTriStateMixed,
                                            Microsoft.Office.Core.MsoTriState.msoFalse);
            //objActivePresentation.SaveAs(sImagesDirectoryPath, PpSaveAsFileType.ppSaveAsJPG, MsoTriState.msoFalse);
            //objActivePresentation.Export(sImagesDirectoryPath + @"\Slide1.png", "png", 960, 720);
            //objActivePresentation.SaveAs(sImagesDirectoryPath + "slide", PpSaveAsFileType.ppSaveAsTIF, MsoTriState.msoFalse);
            int i = 0;
            foreach (Microsoft.Office.Interop.PowerPoint.Slide objSlide in objActivePresentation.Slides)
            {
                //Names are generated based on timestamp. 
                //objSlide.Export("Slide" + i, "PNG", 960, 720);
                objSlide.Export(sImagesDirectoryPath + @"\Slide" + i + ".GIF", "GIF", 960, 720);
                i++;
            }
            objActivePresentation.Close();
            appPpt.Quit();
        }
        catch (Exception ex)
        {
            throw;
        }
    }
person Dnyaneshwar    schedule 06.03.2013