Программно извлечь встроенный файл из презентации PowerPoint - PullRequest
3 голосов
/ 23 августа 2010

Я работаю над надстройкой VSTO PowerPoint, которая включает запись и воспроизведение звуков. В последнюю минуту меня попросили разрешить пользователям выбирать устройство, которое будет воспроизводить звук, как это делает Skype.

В общем, я не думаю, что можно указать, какое устройство PowerPoint следует использовать, за исключением выбора устройства по умолчанию на панели управления, что я не могу сделать программно. Однако я могу распознать звуки, записанные моей надстройкой, потому что они встроены как SoundEffect в формы, которые я помечаю.

У меня вопрос: можно ли получить прямой доступ к WAV-файлу - что-то вроде SoundEffect.ImportFromFile , но в другом направлении? Если бы я мог это сделать, я мог бы открыть и воспроизвести файл .wav, используя код надстройки, а не PowerPoint.

[Изменить: напрямую, я имею в виду «без необходимости сохранять презентацию в другом формате»]

В качестве альтернативы, есть ли способ добавить и извлечь двоичные файлы в виде встроенного содержимого в презентации?

Я подозреваю, что это невозможно, но если бы кто-то знал, я бы нашел этого человека в StackOverflow!

1 Ответ

4 голосов
/ 24 августа 2010

Возможны оба варианта.

  1. Извлечение файлов WAV из PPTX : все встроенные носители находятся в папке .pptx \ ppt \ media (переименуйте .pptx в .zip, распакуйте и перейдите в \ ppt \ media).Они обычно нумеруются последовательно в порядке их добавления и / или обработки.Повествование, AFAIK, всегда встроено и никогда не связано.Проблема будет заключаться в том, чтобы определить, какой именно файл нужно извлечь, - об этом можно позаботиться, добавив к нему тег или другой уникальный идентификатор при добавлении в pptx.Чтобы извлечь его, используйте Open XML SDK (или просто System.IO.Packaging) и откройте копию текущей презентации в памяти, найдите .wav в папке (я использую Linq-to-XML длянайдите то, что мне нужно) и прочитайте это в потоке памяти для записи на диск для воспроизведения или, если ваша надстройка может воспроизводить из потока памяти, даже лучше.

  2. Двоичные типы в PPTX : в документ Open XML может входить что угодно, но ключом остается то, что он остается там.Подробности см. В этом ответе - Можно ли добавить некоторые данные в документ Word? .

...