Общие сведения о рисунках в двоичных форматах файлов Office (машинный перевод)

Важно!

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

Аннотация. В этой статье описывается двоичный формат файлов MS-ODRAW, известный также как OfficeArt, используемый для хранения графических объектов в текущей и предыдущих версиях продуктов Microsoft Office.

Дата последнего изменения: 9 марта 2015 г.

Применимо к: Excel 2010 | Office 2007 | Office 2010 | Open XML | PowerPoint 2010 | SharePoint Server 2010 | VBA | Word 2010

В этой статье
Что такое формат файла MS-ODRAW?
Структуры в формате MS-ODRAW
Извлечение изображения из двоичного файла
Заключение
Дополнительные ресурсы

Applies to:Microsoft Office

По:   Корпорация Майкрософт

Содержание

  • Что такое формат файла MS-ODRAW?

  • Структуры в формате MS-ODRAW

    • Рисование группы

    • Рисунки

    • Фигуры

      • Типы фигур

      • Координаты и группирования

    • правила;

    • Растровые изображения

    • Properties

  • Извлечение изображения из двоичного файла

    • Фигуры и группы фигур

    • Properties

    • Растровые изображения

  • Заключение

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

В данной статье описываются элементы в формате двоичного файла MS-ODRAW и приведены примеры того, как извлекать содержимое картинки из двоичного файла. Целью данной статьи является Показать некоторые практические задачи, которые можно выполнять на двоичные файлы, а также необходимо предоставить основные сведения о формате, который поможет вам более подробные исследования. В этой статье за серию статей, которые вводят двоичных форматов файлов, которые используются в продуктах Microsoft Office. Эти статьи предназначены для использования вместе с open file format specifications в Microsoft MSDN:

Что такое формат файла MS-ODRAW?

[MS-ODRAW]: Office Drawing Binary File Format, также известный как OfficeArt, — это двоичный формат файла, используемый приложениями Microsoft Office для хранения графических элементов, таких как рисунки, фигуры и объекты WordArt, и связанное форматирование. Эти элементы могут содержаться в других графических объектов или диаграмм, схем, таблиц и элементов управления, или может отображаться как автономные компоненты в файл.

Формат MS-ODRAW хранит графических объектов в файлы, создаваемые программой узла, такие как Microsoft Word. Эти графические объекты можно найти в контексте диаграммы, диаграммы или таблицы, которая определяется формат MS-OGRAPH, который хранится в файле узла. Нет файлов MS-ODRAW.

Этот формат и форматы файлов, используемые Microsoft Word, Microsoft PowerPoint, Microsoft Excel и Microsoft Outlook задокументированы, исчерпывающим образом, в библиотеке MSDN по следующему пути: Open Specifications/Data Portability/Microsoft Office File Formats/Microsoft Office File Format Documents. Из этого места можно открыть полную спецификацию формата файла, либо непосредственно на веб-узле MSDN, либо в формате PDF.

Структуры в формате MS-ODRAW

Графический объект состоит из ряда записей, которые могут содержать другие записи. Запись, которая содержит другие записи называется контейнера, в то время как запись, которая содержит данные, называется atom. Все записи совместно использовать общие Record Header, который указывает тип записи и длины. Заголовок записи также имеет поля, используемые записи atom для определения версии и экземпляр, чтобы отличить от других атомов в одном контейнере.

Поскольку записи совместно используют общий заголовок, можно выборочно синтаксический анализ записей путем считывания только поля заголовка каждой recType и recLen, пока не будет найдена нужная запись. Кроме того можно определить типы пользовательских записей, которые применяются только к приложению путем создания recType уникальных значений, который является как хост-приложения размещения графических элементов в документе и отрисовки связанного текста.

В следующих разделах объясняется организационной иерархии контейнеров объектов внутри узла документа и описания некоторых ключевых структур, которые применяются для различных типов графических элементов. Схема и дополнительных пояснений в иерархии объектов контейнера, представлен 1.3 Structure Overview (Synopsis) раздел в спецификации MS-ODRAW.

Рисование группы

Каждый файл узла, содержащего графические элементы содержит одну Группу Рисование, включающий все рисунки в файле. Рисунки хранятся в отдельных графических объектов, которые не хранятся в самой группе рисования, но логически связанные с ним. Рисование группа содержит Свойство таблицы, которая хранит параметры по умолчанию для новых фигур и BLIP хранилище, в котором содержатся все статические изображения, используемые в файле. Отдельные рисунки ссылаться на эти изображения из центральной точки для сокращения дублирования данных изображения.

В записи OfficeArtDggContainer указана группа рисование.

Рисунки

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

Запись OfficeArtDgContainer соответствует графического объекта. Содержит общие записи заголовка и записи графических данных в OfficeArtFDG на 16 байт для указания числа фигур в документе и идентификатор последней фигуры в документе.

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

Коллекции фигур в записи Рисование

поле

Тип записи

Описание

deletedShapes

Массив OfficeArtSpgrContainerFileBlock

Определяет удаленные фигур и группы фигур.

groupShape

OfficeArtSpgrContainer

Определяет свойства фигуры для фигуры группы и содержит все фигуры в группе как массив.

regroupItems

OfficeArtFRITContainer

Содержит группы идентификаторов для фигур, которые без группировки.

shape

OfficeArtSpContainer

Определяет свойства фигуры по умолчанию для текущего документа.

Фигуры

Большинство графических объектов, созданных в приложениях, Microsoft Office состоят из фигур. Отдельные фигуры имеют свойства, которые определяют тип фигуры, такие как прямоугольник со скругленными углами или двойной стрелки, ее связи с другими фигурами, размер, положение и содержатся сведения об их обработке, такие как линии и заливки. В записи OfficeArtSpContainer определены отдельные фигуры.

Типы фигур

Все типы фигуры OfficeArt, перечислены в перечислении MSOSPT. Внутри OfficeArtSpContainer запись, которая определяет фигуры есть атрибут shapeProp, являющийся записью OfficeArtFSP. Поле recInstance OfficeArtFSP запись заголовка содержит значение перечисления MSOSPT, которое задает тип фигуры. Следующая диаграмма показывает, как определяется Четырехконечная звезда в иерархии контейнеров.

Схема типов фигур в иерархии контейнеров

Координаты и группирования

Координаты и группировки знает о установлено, поскольку как положения и размера фигуры зависит от состояния группировки. Все фигуры в рисунке, входящего в группу фигуры верхнего уровня, который задается в записи OfficeArtSpgrContainer. В группу фигур есть основные фигуры, какие другие фигуры, привязанный к, называемый групповой фигуры. Эта форма не отображается. Группа фигуры верхнего уровня находится на поверхность пользовательского Интерфейса клиента с помощью атрибута clientAnchor OfficeArtSpContainer записи, которая определяет группу фигур. ClientAnchor — это запись OfficeArtClientAnchor, который определен в клиентском приложении.

Положение и размер относительно точки привязки клиента определяются группировки. Простые фигуры определяется как прямых дочерних групп фигуры верхнего уровня, в то время как фигуры, которые были сгруппированы с другими фигурами в пользовательском Интерфейсе становится группой объектов, подчиненных фигур. Как с помощью группы верхнего уровня группу подчиненных фигур определяется в записи OfficeArtSpgrContainer, который служит оболочкой для записи OfficeArtSpContainer, которая определяет форму записи OfficeArtSpgrContainerFileBlock. Размер и расположение фигуры группы определяются свойством OfficeArtSpContainer.shapeGroup запись OfficeArtFSPGR. Координаты каждой фигуры дочерних определяются его свойство OfficeArtSpContainer.childAnchor, которая представляет запись OfficeArtChildAnchor.

В следующем примере показано два вида фигуры.

Круг компаса

Круг компаса

Четырехконечная звезда

Четырехконечная звезда

Компас роза состоит из двух фигур ромбВертикальный ромб и Горизонтальный ромб, группируются вместе, тогда как Четырехконечная звезда представляет собой простую форму и не является частью подчиненного группы.

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

Схема контейнеров документов

Координаты для фигуры группы находятся в атрибуте .shapegroup . Во втором и третьем фигур в массиве, фигуры потомков, следует их координатами своих законных .childAnchor атрибуты. Дополнительные фигуры, добавляемые к этой группе также будет хранить их координаты в атрибуте .childanchor .

Четырехконечная звезда из предыдущего рисунка был создан в одну фигуру и хранится в виде прямых дочерних фигуры верхнего уровня группы, как показано на следующей схеме:

Иерархия контейнеров для простой фигуры

правила;

В одном документе правила определяют соединительные линии, дуги и выноски. Каждый графический объект OfficeArtDgContainer в файле содержит экземпляр OfficeArtSolverContainer, который содержит массив записей OfficeArtSolverContainerFileBlock, каждый из которых может быть OfficeArtFConnectorRule, OfficeArtFArcRule или OfficeArtFCalloutRule.

Запись OfficeArtFConnectorRule определяет соединитель, согласно которой фигур он подключается к, такие, как в блок-схему и в какой точке фигуры он привязывается к. Разъем правила, основные правила интерес. Выноска правил и правил arc только предоставить идентификатор выноски или дуги, они применяются к и дополнительные сведения отсутствуют.

Пример OfficeArtSolverContainer с правилами разъемов содержатся в разделе 3.1.5 OfficeArtSolverContainer в документации MS-ODRAW.

Растровые изображения

Формат MS-ODRAW называют растровых изображений двоичных больших изображений или изображений (простые звуковые сигналы). Растровые изображения в документе Microsoft Office хранятся централизованно в BLIP хранения, который является запись OfficeArtBStoreContainer в графических группы верхнего уровня. BLIP хранилище содержит массив OfficeArtBStoreContainerFileBlock записей. В заголовок записи в хранилище BLIP recInstance и recLen поля укажите всего их размера в байтах и число записей OfficeArtBStoreContainerFileBlock.

Каждая запись OfficeArtBStoreContainerFileBlock содержит запись OfficeArtFBSE или запись исходного состояния OfficeArtBlip, как указано в поле type его заголовок записи. Запись OfficeArtFBSE перенос записи OfficeArtBlip в имени, размера, типа и сведения о смещении. Запись OfficeArtBlip содержит запись заголовка и поток фактической битов изображения.

Следующая диаграмма показывает расположение двоичных данных в иерархии контейнеров.

Схема, показывающая расположение данных изображения

Properties

Свойства определяют фигур и рисунков. Формат MS-ODRAW сохраняет свойства в таблицах свойств. Каждая фигура имеет свойство таблицы для свойств, которые применяются только к фигуры, состоящий из записи OfficeArtFOPT, запись OfficeArtSecondaryFOPT и записи OfficeArtTertiaryFOPT. В именах запись «ПТ» означает «Свойства таблицы». Кроме того верхнего уровня рисования группа содержит таблицу свойств, свойства, применяемые через файл, который содержит только запись OfficeArtFOPT и записи OfficeArtTertiaryFOPT. Свойства, определенные в графических группы верхнего уровня, используются значения по умолчанию для свойства не определен, отдельных фигур, но там, где задаются свойства отдельных фигур, они переопределяют значения по умолчанию. Свойства не задано в любом месте восстановить состояние системы или приложения по умолчанию. Запись заголовка для каждой таблицы свойств указывает число свойств и длина в байтах записи.

OfficeArtFOPT, OfficeArtSecondaryFOPT или OfficeArtTertiaryFOPT запись представляет собой массив записей по категориям OfficeArtRGFOPTE, каждый из которых представляет группу связанных свойств. В именах запись «rg» означает «Связанной группы» и «pte» означает «Операция таблицы свойств». Отдельные свойства хранятся в виде OfficeArtFOPTE записей. Эти записи имеют заголовок записи, но начинается с полем opid, который указывает сведения заголовка для свойства. Opid хранится в виде записи OfficeArtFOPTEOPID. Если последний фрагмент записи OfficeArtFOPTEOPID, поле fComplex равно 0x1, свойство является сложного свойства. В этом случае сведения, размер которого превышает 4-байтовый предел записей OfficeArtFOPTE перемещается в разделе complexData OfficeArtRGFOPTE родительской таблицы.

Извлечение изображения из двоичного файла

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

Группировать ячейки с ведущим приложением для рисования

Ведущее приложение

Структуры, содержащие рисунки

Структуры, содержащие Рисование групп

Microsoft Excel

HFPicture, MsoDrawing

HFPicture, MsoDrawingGroup

Microsoft PowerPoint

DrawingContainer

DrawingGroupContainer

Microsoft Word

OfficeArtWordDrawing

OfficeArtContent

Следующие процедуры демонстрируют обычно извлечение содержимого MS-ODRAW из ведущего приложения без включения каких-то определенных для этого приложения.

Запись заголовков

Заголовки всех записей в формате MS-ODRAW, 8 байт, длинные и нулевым индексированием. Например третий байт — 2 байта, а последний байт является байтом 7. Байт 2-3 задайте тип записи, а последние 4 байта дать длина записи в байтах. Зная тип и длина записи, вы решили считать число байтов, указанное в Длина записи, либо пропустить это же количество байтов и перейти к следующей записи.

Фигуры и группы фигур

Следующие процедуры показывают, как для воссоздания простых фигур и группы фигур в Microsoft Office документов. Это не относится к разъемам или выноски, определяемые в контейнеры поиска решения или диаграмм и графиков, которые используют формат MS-OGRAPH. Эти процедуры также не задать точное расположение фигуры или группу фигур в документе клиент, а также они включают параметры отмены истории или редакции журнала.

Чтобы воссоздать группу фигур или solo фигуры в формате MS-ODRAW

  1. Поиск записи OfficeArtDgContainer в файле для рисования, содержащую рассматриваемый группу фигур или итерации по все рисунки, пока не найдете ту, которая соответствует условиям.

    Прочитайте заголовок записи, чтобы получить число байтов в конец документа.

  2. Проверьте каждый заголовок записи в контейнере, пока не найдете где тип записи = OfficeArtSpgrContainer (0xf003). Если отсутствует запись OfficeArtSpgrContainer, нет ни одной фигуры в документе.

  3. Запись OfficeArtSpgrContainer представляет поле .groupshape. Эта запись содержит все активные фигуры рисунка как массив записей OfficeArtSpgrContainerFileBlock.

    Прочитать заголовок записи для получения длины контейнера, а затем начать чтение первой записи OfficeArtSpgrContainerFileBlock. Поскольку это первая запись OfficeArtSpgrContainerFileBlock в массиве, он должен содержать запись об OfficeArtSpContainer, должно соответствовать групповой фигуры для текущей группы.

  4. Чтение записи OfficeArtSpContainer, как описано в следующей процедуре, "для"воссоздания одной фигуры в формате MS-ODRAW.

  5. Начните чтение следующей записи OfficeArtSpgrContainerFileBlock, начиная с записи заголовка.

  6. Если .rectype = 0xF004, остальная часть текущего блока файла является запись OfficeArtSpContainer. Чтение записи, как описано в следующей процедуре, "для"воссоздания одной фигуры в формате MS-ODRAW.

    Если .rectype = 0xF003, остальная часть текущего блока файла является запись OfficeArtSpgrContainer, который представляет собой группу подчиненных фигур. Чтение записи, как описано на предыдущих трех шагах.

  7. Прочитайте оставшиеся записи OfficeArtSpgrContainerFileBlock таким же образом.

  8. Найти OfficeArtDggContainer, представляющий группу графического файла.

  9. Внутри OfficeArtDggContainer, найдите свойство таблицы путем проверки каждой записи заголовка, чтение записей введите OfficeArtFOPT и OfficeArtTertiaryFOPT и пропуска остатка.

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

  11. Отображать группы фигур в приложении согласно собранные данные.

Для воссоздания одной фигуры в группе фигуры

  • Начиная с записью OfficeArtSPContainer прочитать заголовок записи для каждой записи внутри контейнера и продолжить следующим образом:

    1. Если тип записи = OfficeArtFSPGR (0xF009) И это первый фигуры в документе и группу фигур, запись представляет поле .shapegroup. Пропустить заголовок записи и считывания оставшиеся 16 байтов в памяти как целых четыре 4-байтовых чисел со знаком, которые предоставляют слева, сверху, правой и нижней координат фигуры верхнего уровня группы.

    2. Если тип записи = OfficeArtChildAnchor (0xF00F) И текущая фигура не является групповой фигуры, запись представляет поле .childanchor. Пропустить заголовок записи и чтения оставшиеся 16 байт в память как четыре целых числа, указывающие слева, сверху, правой и нижней координат текущей фигуры относительно родительского группы фигур.

    3. Если тип записи = OfficeArtFSP (0xF00A), запись представляет поле .shapeprop, которое является long 16 байт. Чтение записи в память. Бит 4-15 указать значение перечисления MSOSPT, определяющий тип фигуры. Биты 101 и 102 указывается, если фигуры по горизонтали или вертикали отражается от ее ориентации по умолчанию.

    4. Если тип записи = OfficeArtFOPT (0xF00B), OfficeArtSecondaryFOPT (0xF121) или OfficeArtTertiaryFOPT (0xF122) является запись таблицы свойств. Анализ свойств, как описано в следующей процедуре, "для"разбора свойства в формате MS-ODRAW.

    5. Пропустите все записи.

Properties

Для разбора свойства в формате MS-ODRAW

  1. Начиная с таблицы свойств, таких как запись OfficeArtFOPT начните чтение первый элемент массива .fopt, который состоит из группы свойств OfficeArtRGFOPTE. Каждая группа представляет категорию свойств в таблице свойств.

  2. Начните чтение первой группы OfficeArtRGFOPTE. OfficeArtRGFOPTE записи имеют заголовок отсутствует запись, но начинается с первого элемента массива .rgfopte состоит из OfficeArtFOPTE записей.

  3. Каждая запись OfficeArtFOPTE представляет одно свойство. Чтение .opid 2-байтовое поле, которое находится в OfficeArtFOPTEOPID записи в память.

    Прочитайте первые 14 бит идентификатор свойства как целое число без знака. Чтобы найти какие целочисленные значения соответствуют свойства, вернитесь к списку свойства в section 2.3 спецификации MS-ODRAW.

    Последний фрагмент, если установлено значение 1, означает, что что это сложное свойство.

  4. Прочитать оставшиеся поля .op размером 4 байта текущей записи OfficeArtFOPTE как целое число со знаком, который указывает значение свойства, или если свойство является сложным, число байтов, сложных данных, которые содержат значение.

  5. Прочитайте оставшиеся записи в массиве .rgfopte таким же образом.

  6. После последней записи OfficeArtFOPTE чтения сложных данных. Сложные данные отображаются в том же порядке, как свойства массива в размеры, указанные в полях .op.

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

Растровые изображения

Чтобы извлечь растровых изображений в формате MS-ODRAW

  1. Найдите запись для файла OfficeArtDggContainer.

  2. Прочитайте заголовок записи для получения длины контейнера.

  3. Проверьте запись заголовка для каждой записи внутри контейнера, пока не будет найдена запись OfficeArtBStoreContainer (0xF001), который представляет поле .blipstore, или пока не будет достигнут конец OfficeArtDggContainer. Если нет нет нет нет рисунков для извлечения записи OfficeArtBStoreContainer.

  4. Запись OfficeArtBStoreContainer хранит все растровые изображения для файла в массив OfficeArtBStoreContainerFileBlock записей. Прочитайте заголовок записи.

    Бит 4-15 — это целое число без знака, задающее длину массива.

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

    1. Прочитайте байт 2-3 запись заголовка для получения типа записи.

    2. Если тип записи = 0xF018-0xF117 запись является OfficeArtBlip. Перейдите к следующему шагу этой процедуры.

      Если тип записи = 0xF007, запись является OfficeArtFBSE. Выполните следующие действия.

      1. Пропустите первые 20 байт.

      2. Читать Далее 4 байта, дающие размер точечного рисунка как целое число без знака.

      3. Пропустите следующий 12 байт.

      4. Чтение поле .name имеет переменную длину null нулем строку Юникода, предоставляет имя растрового изображения.

        Следующее поле является .embeddedblip, которая представляет запись OfficeArtBlip.

    3. Прочитайте заголовок записи записи OfficeArtBlip. 2-3 Байта укажите, должен иметь тип файла изображения, если были сохранены отдельно. Последние 4 байт заголовка записи дают длина остальные записи. Дополнительные сведения, определяющие, какие значения соответствуют какие типы файлов содержатся в разделе section 2.2.23 спецификаций MS-OGRAPH.

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

  6. Начать чтение следующей записи OfficeArtBStoreContainerFileBlock и продолжается таким же образом, пока все растровые изображения обрабатываются.

Заключение

Внесение изменений в двоичный файл любого Microsoft Office требует считывания файла в это внутреннее представление редактирования представление, а затем перезапись файла. Из-за этих требований операции сохранения требуется адекватное форматов файлов, участвующих, который выходит за рамки данной статьи. В этой статье и соответствующие статьи в серии предоставляют действия и сведения для выполнения простых в итоговом и упрощения лучше понимать формат MS-ODRAW.

В частности базовые знания в формате MS-ODRAW может улучшить с оборудованием с Microsoft Office двоичные форматы файлов, позволяя определить и проанализировать графические объекты и растровые изображения, как их возникновения в двоичных файлах Microsoft Office.

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

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

Примечание

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