как узнать, какие слайды изменяются пользователем при открытии презентации и сохранять в VSTO powerpoint c # - PullRequest
0 голосов
/ 21 января 2019

В событии BeforeSave я хочу проверить, какие слайды изменяются пользователем.Технически я хочу проверить, каково было состояние слайда, когда он открывался, и каково состояние сохранения, поэтому я получу любое подтверждение, для которого слайды были изменены.

private void Application_PresentationBeforeSave(Presentation Pres, ref bool Cancel)
    {
        MessageBox.Show("before save event.....HITED");
    }

Событие прошло успешно.Я хочу проверить, изменен ли слайд пользователем или нет.Я знаю возможные способы следующим образом:

(1) при открытии презентации преобразуйте все слайды в изображения => в перед событием сохранения, снова преобразуйте все слайды в изображения, затем сравните эти изображения.но это слишком длительный и трудоемкий подход.поэтому я не могу использовать

(2) при открытии презентации, получить каждый слайд PresentaionML и, прежде чем сохранить, получить PresentaionML, а затем сравнить эти строки.это также ненадежный процесс.Я попробовал это.zip PPT, затем распакуйте его, он покажет структуру папок .. там есть папка слайдов, содержащая все XML-слайды в отдельном файле. Но это XML-файлы, не содержащие идентификатора слайда или чего-либо (уникальный идентификатор), поэтому мы не можем с уверенностью сравнить с другим местом назначенияфайл slide.xml.(если пользователь изменит последовательность слайдов или удалит слайд, этот сценарий потерпит неудачу)

(3) я попробовал третий подход, например, при открытии файла создайте копию файла PPT, затем перед сохранением доступа к событию, скопировавшегоPPT и каждый слайд-объект будут сравниваться с текущим активным слайд-объектом PPT с помощью

bool flag =obj1.Equals(obj2); 

, но это всегда возвращает false.потому что obj1 член семьи активной презентации.и obj2 является членом не активной презентации (потому что мы прагматично открыли).поэтому он возвращает false, даже если слайды одинаковы с обеих сторон.

- это любой встроенный метод для этого.например, который даст список слайдов, которые были изменены после открытия .......?

у любого есть другой подход, чтобы решить эту проблему .....?

Я работаю в VSTO c # PowerPoint..net framework 4.5

...