Сохранение и автосохранение PowerPoint OpenXML PresentationDocuments - PullRequest
2 голосов
/ 19 октября 2011

Мне нужен совет по сохранению документов OpenXML, в частности, PresentationDocument.

В моем сценарии я открываю презентацию PowerPoint .pptx непосредственно с диска, который выступает в качестве шаблона.Затем я добавляю (копирую) слайды из других презентаций PowerPoint.Для каждой отдельной исходной презентации я также добавляю ее MasterSlideParts и SlideLayoutParts.

Вопрос 1: Когда презентация нуждается в сохранении, можно ли выполнить единственную команду, которая сохранит все изменения в PresentationDocument?Или мне нужно вручную сохранять каждый элемент, который является новым или был изменен, например:

        presentationDocument.PresentationPart.Presentation.Save();

        foreach (var slideMasterPart in presentationDocument.PresentationPart.SlideMasterParts)
        {
            slideMasterPart.SlideMaster.Save();
        }

Вопрос 2: При открытии PresentationDocument есть опция для "автосохранения"который, кажется, по умолчанию "true".Кто-нибудь может объяснить, что делает автосохранение?

Что-то, что я прочитал, говорит о том, что это сохраняет все в PresentationDocument при удалении PresentationDocument.Это правильно?

Если это так, мне нужно будет установить autosave = false, так как мне нужно будет контролировать сохранение себя, чтобы иметь возможность проверить логику построения презентации.

Заранее благодарим за любые ответы.

Стив

1 Ответ

2 голосов
/ 20 октября 2011

Вопрос 1: Если вы используете потоки для открытия файла и выполняете изменения таким образом, вам не нужно явно вызывать ни один из этих вызовов сохранения. Вам просто нужно вызвать метод Dispose() для переменной presentationDocument. Документация заявляет для утилизации

Очищает и сохраняет содержимое, закрывает документ и освобождает все ресурсы.

Это избавит вас от необходимости сохранять вызов на презентации или циклически проходить по каждому отдельному слайду.

Вопрос 2: Документация для autosave гласит следующее:

Получает флаг, указывающий, следует ли сохранять детали на утилизации.

Это заставит меня поверить, что если вы хотите, чтобы при вызове метода * 1026 были сохранены все детали, вы бы хотели, чтобы это значение было установлено в true. В противном случае ваши изменения могут быть не сохранены.

...