Информация о формате двоичных файлов MS-PPT приложения PowerPoint (машинный перевод)

Важно!

Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.

Краткие сведения: информация о формате двоичных файлов MS-PPT, который используется в более ранних версиях продуктов Microsoft PowerPoint, включая основные структуры и концепции для программного взаимодействия с PowerPoint.

Дата последнего изменения: 23 июня 2011 г.

Применимо к: Office 2007 | Office 2010 | PowerPoint 2010 | VBA

В этой статье
Общие сведения о формате MS PPT
Заключение
Дополнительные ресурсы

**Относится к:**Microsoft Office PowerPoint 2003 | Microsoft PowerPoint 2002 г. | Microsoft PowerPoint 2000 | Microsoft PowerPoint 97

Публикации:   Февраль 2011

Предоставляемых:   Корпорация Майкрософт

Содержание

  • Общие сведения о формате MS PPT

  • Основные компоненты формата MS PPT

  • Извлечение содержимого из файла PowerPoint

    • Извлечение текста из файлов PowerPoint

    • Получение слайды из файлов PowerPoint

    • Отменить журнал в формате MS PPT

  • Заключение

  • Дополнительные ресурсы

В данной статье описывается структуры и некоторые процедуры для работы с файлами MS PPT. Он является частью серии статей, которые вводят формат двоичного файла, используемый Microsoft Office продуктов. Эти статьи предназначены для использования в сочетании с Office File Format Documents в MSDN.

Общие сведения о формате MS PPT

Формат двоичных файлов MS PPT используется PowerPoint Microsoft Office 2003 г., Microsoft PowerPoint 2002 г., Microsoft PowerPoint 2000 и Microsoft PowerPoint 97. Он начинается с потока текущего пользователя, а затем поток документа PowerPoint и поток изображения, а также некоторые дополнительные потоки сводные данные, настраиваемые XML-данные и цифровые подписи. Фактическое содержимое в большинстве находящихся в контейнерах слайда потока документов PowerPoint. Поток текущего пользователя содержит текущего пользователя Atom, которой принадлежит пользователь, версии и системных данных. Поток изображения содержит встроенные изображения, на которые ссылаются из контейнеров слайдов они отображаются. Запись — наименьшая единица данных в этот формат.

Файл при хранении данных последовательно изменений, внесенных пользователем. Это означает, что если вы захотите восстановить текущую версию файла, можно извлечь содержание последнего изменения пользователя и никакие данные, прежде чем он. Точно так же предыдущих версий файла можно получить, перейдя по предыдущих изменений, внесенных пользователем в потоке.

Примечание

Для выполнения большинства задач программирования в Microsoft PowerPoint рекомендуется использовать PowerPoint Primary Interop Assemblies (Возможно, на английском языке). Это набор.NET классы, которые предоставляют полную объектную модель для работы с Microsoft PowerPoint. Этой серии статей рассматриваются только дополнительные сценарии, такие как не установленным Microsoft PowerPoint.

Основные компоненты формата MS PPT

Ниже перечислены основные структуры интерес PPT-файл. Структуры находятся все в потоке документа PowerPoint Если не указано иначе.

  • CurrentUserAtom

    atom record, задающий сведения о пользователе, последнее изменение файла и где расположены самые последние user edit. Это единственная запись в CurrentUser stream.

  • запись UserEditAtom

    Запись UserEditAtom включает, помимо прочего, указатели на PersistDirectoryAtom запись для редактирования текущей и предыдущей записи UserEditAtom.

  • запись PersistDirectoryAtom

    Указывает запись PersistDirectoryAtomсохранения объекта каталога, который таблица идентификаторов объектов persist и смещения потока, где можно найти сохранения объектов. Каждой правки пользователя хранится каталог сохраненный объект, определяющий, где можно найти все новые и измененные persist объекты.

  • Структура PersistDirectoryEntry

    PersistDirectoryEntry структуры являются частью записи PersistDirectoryAtom и увеличиваются. К примеру: persistDirEntry[0], persistDirEntry[1]. Задает сохранять сжатые таблицы последовательные идентификаторы объектов и сохранения смещений потока для связанных объектов.

    Первые 20 бит предоставить идентификатор сохраненного объекта. Число записей смещения persist дают следующие 12 битов в структуре currentPersistDirectoryEntry. Остальная часть структуры PersistDirectoryEntry состоит из смещения записей, каждый из которых используют 4 байта. Если имеется более одной структуры PersistOffsetEntry, каждая последующая запись применяется сохраненный объект вместе с кодом, один больше предыдущей.

  • Структура DocumentContainer

    Это контейнер запись, содержащая сведения о документе. Он содержит список слайдов, заметок, звуки, графические элементы и другого содержимого. Весь контур для редактирования текущей хранится в списке слайдов структуры DocumentContainer. Текст внутри фигуры сохраняются в Shapes записей.

  • Структура MainMasterContainer

    Это контейнер запись, которая определяет основной образца слайдов. Основной образца слайдов определяет форматирование и некоторые содержимое, такое как графический шаблон, на слайде презентации.

  • Структура SlideContainer

    Это запись контейнера для слайда в презентации. Он включает в себя параметры перехода, заголовков и колонтитулов, указатели и форматирование для графических элементов и структуры SlideAtom, указывающий заполнитель фигуры, используемые в макет слайда.

  • Структура SlideListWithTextContainer

    Структура SlideWithTextContainer определяет список записей SlideListWithTextSubContainerOrAtom, каждый из которых содержит ссылки на текст, содержащийся в них записей и слайды презентации.

  • TextCharsAtom структуры и структуры TextBytesAtom

    Ниже приведены два вида SlideListWithTextSubContainerOrAtom записей, которые содержат символы текста. Каждый содержит запись 8-байтовый заголовок последовательность Юникода или частичных символов Юникода и.

  • Структура DrawingGroupContainer

    Это является частью структуры DocumentContainer, изображения, объекты WordArt и другого графического содержимого.

  • Структура RecordHeader

    Структура RecordHeader представляет структуру длиной 8 байт в начале каждого контейнера запись и запись atom в файле. Он содержит четыре поля: recVer, recInstance, recType и recLength. Последние два являются наиболее интересными. В поле recType указывает тип текущей записи и поля recLen дает длина в байтах.

Извлечение содержимого из файла PowerPoint

Извлечение содержимого из PowerPoint документа в формате файла MS PPT зависит от типа содержимого, которое необходимо получить и в каких условиях. Беспорядочно, можно захватить весь текст из PPT-файл с помощью одного или двух страниц кода, но который не сохраняет форматирование, рисунки, переходы или даже границ слайдов. Вы может извлечь все картинки, например, с подобный прием, хотя это выходит за рамки данной статьи. Получить содержимое слайдов, слайдов, необходимо определить текущие изменения, читая PersistDirectoryEntry записей.

Извлечение текста из файлов PowerPoint

Для получения обычного текста из презентации PowerPoint

  1. Откройте поток документа PowerPoint.

  2. Для каждой записи:

    1. Прочитайте заголовок записи.

    2. Если поле recTypeTextCharsAtom (0x0FA0) или TextBytesAtom (0x0FA8), дочитайте до конца записи как текст.

Получение слайды из файлов PowerPoint

В теории удалось реконструировать набор слайдов с такой же подход, как извлечение обычного текста. Например, путем проверки заголовков записей для recType = SlideContainer-DocumentContainer/NotesContainer /, но при этом возвращается Беспорядочное набор активных слайды и устаревшие слайды в состояния редактирования без возможности различать их. Но если начать с создания объекта каталога persist указатели на все текущее содержимое и не устаревшие данные.

Для извлечения из файлов PowerPoint слайды и их содержимого

  1. Создайте объект persist.

    1. Создайте структуру данных, например: словарь для хранения двух столбцов данных, связанных. Первый столбец для сохраненного идентификаторы объектов, второй — для смещения, где они находятся в потоке.

    2. Структура CurrentUserAtom, считанных из потока CurrentUser. 16–19 Байтов структуры CurrentUserAtom укажите в поле offsetToCurrentEdit.

    3. Открыть поток документа PowerPoint и прочитать структуру UserEditAtom из смещения указанного поля CurrentUserAtom.offsetToCurrentEdit. 16–19 Байт указать поле offsetLastEdit, а 20–23 байтов в поле offsetPersistDirectory.

    4. Прочитайте структуру PersistDirectoryAtom из предоставленных UserEditAtom.offsetPersistDirectory поля смещения.

    5. Заполнение структуры данных, созданный с использованием значения Идентификаторов и смещения каждой структуре PersistDirectoryEntry. В случаях, в которых структуру PersistDirectoryEntry имеет более чем одно смещение назначьте каждый последующий смещение значение Идентификатора, один больше, чем предыдущий код в таблице.

    6. Перейдите на смещение в потоке документа PowerPoint указанного поля UserEditAtom.offsetLastEdit и прочитать UserEditAtom структуру, которая запускается.

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

  2. Переход через каталог сохраненного объекта, проверку заголовков записи каждого указанного смещения и чтении каждой записи типа = RT_Document. Это структура DocumentContainer.

  3. В структуре DocumentContainer найти список слайдов, которая представляет собой запись с rh.recType = RT_SlideListWithText. Это SlideListWithTextContainer запись, которая содержит массив SlideListWithTextSubContainerOrAtom записей.

  4. Чтение списка слайд. Каждая структура SlidePersistAtom (тип = концентратор.RT_SlidePersistAtom) предшествует записи, содержащие содержимого для каждого слайда. Любая запись rh.recType = RT_TextCharsAtom или rh.recType = RT_TextBytesAtom содержит текст.

  5. Для каждой структуры SlidePersistItem в списке слайдов создайте слайд с текстом соответствующего содержимого.

Такой же подход можно использовать для других содержимого слайдов, например заметок, верхние и нижние колонтитулы и сведения о форматировании.

Отменить журнал в формате MS PPT

Из-за особенностей последовательных MS PPT двоичный формат файла можно легко восстановить предыдущие версии файлов PowerPoint.

Чтобы восстановить прежние версии файлов PowerPoint

  1. Загрузите файл PowerPoint в память.

  2. Из копии в памяти Прочитайте запись CurrentUserAtom из потока CurrentUser.

  3. В потоке документа PowerPoint, прочитать структуру UserEditAtom из смещения указанного поля CurrentUserAtom.offsetToCurrentEdit.

  4. Прочитайте предыдущую структуру UserEditAtom из предоставленных UserEditAtom.offsetLastEdit поля смещения.

  5. Удалите все элементы после предыдущей структуры UserEditAtom.

  6. Обновите значение поля CurrentUserAtom.offsetToCurrentEdit.

  7. Сохраните файл с именем файла. Прибытие известных предыдущих версий, можно продолжить поиск с возвратом вплоть до правильный UserEditAtom структуру.

Заключение

Это только выборка формата MS PPT. С помощью средств, доступных в данной статье восстановления данных должен быть внутри аудитории. С помощью дополнительных исследований можно начать восстановление носителя, форматирование данных и другие метаданные и со временем работы операции сохранения.

Дополнительные ресурсы

Дополнительные сведения см. в следующих документах, в которых описывается:

Примечание

Отказ от ответственности относительно машинного перевода. Данная статья была переведена с помощью компьютерной системы без участия человека. Microsoft предлагает эти машинные переводы, чтобы помочь пользователям, которые не знают английского языка, ознакомиться с материалами о продуктах, услугах и технологиях Microsoft. Поскольку статья была переведена с использованием машинного перевода, она может содержать лексические,синтаксические и грамматические ошибки.