Проблемы с офисной автоматизацией в asp.net. Я могу использовать альтернативы, такие как open-office, если бы я знал, как

У меня есть веб-приложение ASP.NET 2.0, которое должно загрузить файл ppt, а затем извлечь его слайды в изображения. Для этого я импортировал сборки office.dll и Microsoft.Office.Interop.PowerPoint.dll и написал следующий код

public static int ExtractImages(string ppt, string targetPath, int width, int height)
    {
        var pptApplication = new ApplicationClass();

        var pptPresentation = pptApplication.Presentations.Open(ppt, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);

        var slides = new List<string>();

        for (var i = 1; i <= pptPresentation.Slides.Count; i++)
        {
            var target = string.Format(targetPath, i);
            pptPresentation.Slides[i].Export(target, "jpg", width, height);
            slides.Add(new FileInfo(target).Name);
        }

        pptPresentation.Close();

        return slides.Count;
}

Если я запускаю этот код на своем локальном компьютере, в asp.net или исполняемом файле, он работает отлично. Но если я пытаюсь запустить его на рабочем сервере, я получаю следующую ошибку:

System.Runtime.InteropServices.COMException (0x80004005): PowerPoint не удалось открыть файл. в Microsoft.Office.Interop.PowerPoint.Presentations.Open (строковое имя файла, MsoTriState ReadOnly, MsoTriState без названия, MsoTriState WithWindow) в PPTImageExtractor.PptConversor.ExtractImages (строковый CaminhoPhttp: Int32 alturaThumb, Boolean geraXml) в Upload.ProcessRequest (контекст HttpContext)

Процесс выполняется с пользователем NT AUTHORITY \ NETWORK SERVICE. IIS настроен на использование анонимной аутентификации. Анонимный пользователь - администратор, я настроил его так, чтобы приложение могло запускаться, не беспокоясь о разрешениях.

В моей машине разработки у меня есть офис 2010 бета1. Я также проверил исполняемый файл на компьютере с Office 2007. И если я запускаю код из исполняемого файла на сервере с установленным офисом 2003, он работает отлично.

Чтобы гарантировать отсутствие проблем с разрешениями, каждый сервер имеет полный доступ к веб-сайту. Сайт работает в IIS7 и Classic Mode.

Я также слышал, что у Open-office есть API, который должен это делать, но я ничего не мог найти по этому поводу. Я не возражаю против использования DLLImport для выполнения своих задач, и я могу установить open-office на веб-сервере. Не беспокойтесь о переписывании этого метода, пока параметры одинаковы, все будет работать.

Я ценю вашу помощь.

Ответы на вопрос(6)

Ваш ответ на вопрос