예제 #1
0
        /// <summary>
        /// Изъять информацию из презентации
        /// </summary>
        /// <param name="ppFilePath">Полный путь к презентации</param>
        /// <returns>Информация о презентации</returns>
        public PresentationInfo ExtractInfo(string ppFilePath, ILastInsertedPPTInfoId pptidInfo)
        {
            PresentationInfo presInfo = null;

            long pptCurrentFileId = pptidInfo.GetCurrentPresentationIndex();

            if (SupportedArchiveFormats.Contains(Path.GetExtension(ppFilePath)))
            {
                ExtractArchive(ppFilePath);

                List <string> allDirectories = Directory.GetDirectories(_ExtractDir).ToList();
                allDirectories.Add(_ExtractDir);

                bool isFileFound = false;

                foreach (string dir in allDirectories)
                {
                    foreach (string filePath in Directory.GetFiles(dir))
                    {
                        if (SupportedPowerPointFileFormats.Contains(Path.GetExtension(filePath)))
                        {
                            PPTFile pptFile = new PPTFile(filePath, pptCurrentFileId, ppFilePath);

                            if (ParseSlideCompleteCallback != null)
                            {
                                pptFile.ParseSlideComplite += ParseSlideCompleteCallback;
                            }

                            presInfo    = pptFile.ParsePreesentation();
                            isFileFound = true;

                            if (ParseSlideCompleteCallback != null)
                            {
                                pptFile.ParseSlideComplite -= ParseSlideCompleteCallback;
                            }

                            FileInfo archiveInfo = new FileInfo(ppFilePath);
                            presInfo.FileSize = archiveInfo.Length;
                            break;
                        }
                    }
                }

                if (!isFileFound)
                {
                    _IsErrorExists = true;
                    throw new Exception(String.Format("Файл презентации в архиве не найден\nАрхив был распакован в папку: {0}\nПри следующем запуске программы архив будет удален из временного хранилища",
                                                      _ExtractDir));
                }

                ZipFileOrDirectory(_ExtractDir, presInfo);
            }
            else
            {
                PPTFile pptFile = new PPTFile(ppFilePath, pptCurrentFileId);

                if (ParseSlideCompleteCallback != null)
                {
                    pptFile.ParseSlideComplite += ParseSlideCompleteCallback;
                }

                presInfo = pptFile.ParsePreesentation();

                if (ParseSlideCompleteCallback != null)
                {
                    pptFile.ParseSlideComplite -= ParseSlideCompleteCallback;
                }

                FileInfo fileInfo = new FileInfo(ppFilePath);
                presInfo.FileSize = fileInfo.Length;

                ZipFileOrDirectory(ppFilePath, presInfo);
            }

            return(presInfo);
        }
    /// <summary>
    /// Изъять информацию из презентации
    /// </summary>
    /// <param name="ppFilePath">Полный путь к презентации</param>
    /// <returns>Информация о презентации</returns>
    public PresentationInfo ExtractInfo(string ppFilePath, ILastInsertedPPTInfoId pptidInfo)
    {
      PresentationInfo presInfo = null;

      long pptCurrentFileId = pptidInfo.GetCurrentPresentationIndex();

      if (SupportedArchiveFormats.Contains(Path.GetExtension(ppFilePath)))
      {
        ExtractArchive(ppFilePath);

        List<string> allDirectories = Directory.GetDirectories(_ExtractDir).ToList();
        allDirectories.Add(_ExtractDir);

        bool isFileFound = false;

        foreach (string dir in allDirectories)
        {
          foreach (string filePath in Directory.GetFiles(dir))
          {
            if (SupportedPowerPointFileFormats.Contains(Path.GetExtension(filePath)))
            {
              PPTFile pptFile = new PPTFile(filePath, pptCurrentFileId, ppFilePath);

              if (ParseSlideCompleteCallback != null)
                pptFile.ParseSlideComplite += ParseSlideCompleteCallback;

              presInfo = pptFile.ParsePreesentation();
              isFileFound = true;

              if (ParseSlideCompleteCallback != null)
                pptFile.ParseSlideComplite -= ParseSlideCompleteCallback;

              FileInfo archiveInfo = new FileInfo(ppFilePath);
              presInfo.FileSize = archiveInfo.Length;
              break;
            }
          }
        }

        if (!isFileFound)
        {
          _IsErrorExists = true;
          throw new Exception(String.Format("Файл презентации в архиве не найден\nАрхив был распакован в папку: {0}\nПри следующем запуске программы архив будет удален из временного хранилища",
            _ExtractDir));
        }

        ZipFileOrDirectory(_ExtractDir, presInfo);
      }
      else
      {
        PPTFile pptFile = new PPTFile(ppFilePath, pptCurrentFileId);

        if (ParseSlideCompleteCallback != null)
          pptFile.ParseSlideComplite += ParseSlideCompleteCallback;

        presInfo = pptFile.ParsePreesentation();

        if (ParseSlideCompleteCallback != null)
          pptFile.ParseSlideComplite -= ParseSlideCompleteCallback;

        FileInfo fileInfo = new FileInfo(ppFilePath);
        presInfo.FileSize = fileInfo.Length;

        ZipFileOrDirectory(ppFilePath, presInfo);
      }

      return presInfo;
    }