В событии 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