Использование ifilters без установки, загрузка прямо из моего проекта

Мне нужно извлечь текст с помощью веб-приложения C# MVC. Я использую Ifilter. На рабочем сервере у меня нет установленного MS office или пакета фильтров. поэтому я добавил dll в свой проект и попытался вызвать их из локальных dll.

приложение работает на других компьютерах, но не запускается с сервера

Ниже приведены некоторые фрагменты кода, которые я использую.

это основано на C# IFilter код из codeproject

   enter code here private static bool GetFilterDllAndClass(string ext, out string dllName, out string filterPersistClass)
        {
          if (!GetFilterDllAndClassFromCache(ext, out dllName, out filterPersistClass))
          {
                    ext = ext.ToLower();
                    if (ext == ".docx" || ext == ".pptx" || ext == ".xlsx")
                    {
                        dllName = "offfiltx.dll";
                        if (ext == ".docx")
                        {
                            filterPersistClass = "{5A98B233-3C59-4B31-944C-0E560D85E6C3}";
                        }
                        else if (ext == ".pptx")
                        {
                            filterPersistClass = "{DDFE337F-4987-4EC8-BDE3-133FA63D5D85}";
                        }
                        else if (ext == ".xlsx")
                        {
                            filterPersistClass = "{F90DFE0C-CBDF-41FF-8598-EDD8F222A2C8}";
                        }
                    }
                    else if (ext == ".doc" || ext == ".ppt" || ext == ".xls")
                    {
                        dllName = "offfilt.dll";
                        filterPersistClass = "{64F1276A-7A68-4190-882C-5F14B7852019}";                    
                    }
                    else
                    {
                        string persistentHandlerClass;

                        persistentHandlerClass = GetPersistentHandlerClass(ext, true);
                        if (persistentHandlerClass != null)
                        {
                            GetFilterDllAndClassFromPersistentHandler(persistentHandlerClass,
                              out dllName, out filterPersistClass);
                        }
                    }

            AddExtensionToCache(ext, dllName, filterPersistClass);
          }
          return (dllName!=null && filterPersistClass!=null); 
        }

Так что один из моих вопросов - фиксированный CLSID для DLL (это глобальное значение) или он меняется от системы к другой.

0 ответов

Другие вопросы по тегам