Замена части темы (theme) в текстовом документе (Open XML SDK)
В этом разделе показано, как использовать классы SDK 2.5 Open XML для Office для замены части текстового документа программными средствами.
Для компиляции кода, представленного в этом разделе, требуются следующие директивы сборки.
Пакеты и части документа
Документ Open XML хранится в виде пакета, формат которого определяется спецификацией ISO/IEC 29500-2. Пакет может состоять из нескольких частей со связями между ними. Связь между частями определяет категорию документа. Документ может быть определен как текстовый документ, если его элемент связи пакета содержит связь с основной частью документа. Если соответствующий элемент содержит связь с частью презентации, он может быть определен как презентация. Если соответствующий элемент содержит связь с частью книги, он определяется как электронная таблица. В этот разделе вы будете использовать пакет текстового документа.
Получение объекта WordprocessingDocument
Пример кода открывает текстовый файл, создавая экземпляр класса WordprocessingDocument , как показано в следующем операторе using. В том же операторе откройте текстовый файл document, используя метод Open и задав для логического параметра значение true, чтобы разрешить редактирование документа.
Оператор using — это рекомендуемая альтернатива последовательности методов .Open, .Save, .Close. Это гарантирует, что метод Dispose (внутренний метод, используемый Open XML SDK для очистки ресурсов) вызывается автоматически при достижении закрывающей фигурной скобки. Блок, который следует за оператором using, устанавливает область объекта, создаваемого или именуемого в операторе using. В этом случае это wordDoc. Так как класс WordprocessingDocument в пакете Open XML SDK автоматически сохраняет и закрывает объект в реализации метода System.IDisposable и поскольку Dispose вызывается автоматически при выходе из блока, нет необходимости явно вызывать методы Save и Close, если вы используете оператор using.
Замена темы в пакете Word
Для замены темы в документе Word щелкните ленту Макет страницы и выберите Темы. Отобразится раскрывающееся меню Темы. Чтобы выбрать одну из встроенных тем для применения ее к документу Word, щелкните значок темы. Также можно воспользоваться параметром Поиск тем. , чтобы найти файл темы на компьютере и применить его.
Структура элемента Theme
Элемент темы (theme) состоит из схем цвета (color), шрифта (font) и формата (format). В данном практическом руководстве вы узнаете, как изменить тему программными средствами. В связи с этим полезно ознакомиться с элементом theme. При работе с данным элементом может пригодиться следующая информация из спецификации ISO/IEC 29500.
Данный элемент определяет сложный тип корневого уровня, связанный с таблицей общих стилей (или темой). Данный элемент содержит все различные параметры форматирования, предоставляемые для документа посредством темы; и определяет общий вид и структуру документа при использовании объектов темы в этом документе.
[Пример. Рассмотрим следующее изображение в качестве примера применения различных тем к презентации. В данном примере показано, как влияет выбор темы на шрифт, цвета, фоновые изображения, заливку и эффекты для различных объектов в презентации. конец примера]
В этом примере показано, как влияют темы на шрифты, цвета, фоновые изображения, заливку и эффекты для различных объектов презентации. конец примера]
В следующей таблице приведены возможные типы дочерних объектов класса Theme.
Элемент PresentationML Класс пакета Open XML SDK 2.5 Описание custClrLst CustomColorList Пользовательский список цветов extLst ExtensionList Список расширений extraClrSchemeLst ExtraColorSchemeList Список цветов дополнительной цветовой схемы objectDefaults ObjectDefaults Настройки объекта по умолчанию themeElements ThemeElements Элементы темы
В следующем фрагменте схемы XML определены четыре части элемента темы. Элемент themeElements — это часть с основным форматированием, параметры которого определены в теме. В других частях находятся параметры переопределения, значения по умолчанию и дополнения к сведениям, содержащимся в themeElements. Сложный тип, определяющий тему, CT_OfficeStyleSheet, характеризуется следующим образом.
В данном сложном типе также содержится элемент CT_OfficeArtExtensionList, который используется для последующей расширяемости данного сложного типа.
Как работает пример кода
После открытия файла можно создать экземпляр класса MainDocumentPart в объекте wordDoc и удалить старую часть темы.
Также можно создать новый объект ThemePart и добавить его к объекту MainDocumentPart. Затем добавьте содержимое с помощью объектов StreamReader и StreamWriter, чтобы скопировать тему из themeFile в объект ThemePart.
Пример кода
В следующем примере кода показано, как заменить часть темы текстового документа частью темы из другой пакета. Файл темы, переданный в качестве второго аргумента, должен быть допустимой частью темы в формате XML (например, Theme1.xml). Эту часть можно извлечь из существующего документа или файла темы (.THMX), который был преобразован в файл .Zip путем переименования. Для вызова метода ReplaceTheme можно использовать вызов из следующего примера для копирования темы из файла "Theme1.xml" в файл "MyPkg7.docx".
После запуска программы откройте файл Word и обратите внимание на изменения шрифта.