Документы в Windows Presentation Foundation
Обновлен: Ноябрь 2007
Windows Presentation Foundation (WPF) предлагает широкие возможности для работы с документами, которые позволяют создавать содержимое высокого качества, предназначенное для более легкого доступа и чтения, чем в предыдущих поколениях Windows. В дополнение к расширенным возможностям и качеству приложение WPF также предоставляет интегрированные службы для отображения документов, упаковки и безопасности. Этот раздел содержит введение в типы и упаковку документов WPF и упаковку документов.
В этом разделе содержатся следующие подразделы.
- Типы документов
- Элементы управления документом и разметка текста
- Упаковка документа
- Документы XPS
- Связанные разделы
Типы документов
Приложение WPF разделяет документы на две основные категории на основе их предполагаемого использования; эти категории документов называются «документы фиксированного формата» и «документы нефиксированного формата».
Документы фиксированного формата предназначены для приложений, требующих точного представления в режиме Режим WYSIWYG (режим точного отображения), независимо от используемого дисплея или принтера. Документы фиксированного формата обычно используются при подготовке публикаций с помощью настольных издательских средств, обработке текста и разметке формы, где строгое соблюдение исходного дизайна страницы является обязательным. Документы фиксированного формата, как часть макета, поддерживает точное позиционирование содержимого элементов, независимо от используемых устройств отображения или печати. Например, страница формата фиксированного документа, просматриваемая на экране с разрешением 96 точек на дюйм, будет отображаться точно так же на выводе лазерного принтера с разрешением 600 точек на дюйм или устройстве фотовывода с разрешением 4800 точек на дюйм. Макет страницы остается неизменным во всех случаях, в то время как качество документа повышается в соответствии с возможностями каждого устройства.
Для сравнения, документы нефиксированного формата предназначены для оптимизации просмотра и удобочитаемости и наиболее удобны в использовании, когда простота чтения является основным требованием сценария документа. Вместо предварительно определенного макета, документы нефиксированного формата динамически изменяют и переформатируют свое содержимое на основе переменных времени выполнения, таких как размер окна и разрешение устройства, и дополнительных пользовательских настроек. Веб-страница представляет собой простой пример документа нефиксированного формата, где содержимое страницы динамически форматируется в соответствии с размерами текущего окна. В зависимости от среды выполнения, документы нефиксированного формата оптимизируют просмотр и чтение для пользователя. Например, один тот же документ нефиксированного формата будет динамически переформатирован для оптимальной удобочитаемости как на 19-дюймовом экране с высоким разрешением, так и на небольшом 2x3-дюймовом экране карманного ПК. Кроме того, документы нефиксированного формата имеют множество встроенных возможностей, включая поиск, просмотр режимов оптимизации удобочитаемости и возможность изменения размера и вида шрифтов. Более подробные сведения о документах нефиксированного формата, примеры и иллюстрации содержатся в разделе Общие сведения о документе нефиксированного формата.
Элементы управления документом и разметка текста
Компонент .NET Framework предоставляет набор встроенных элементов управления, которые упрощают использование документов фиксированного формата, документов нефиксированного формата и основного текста в приложении. Отображение содержимого формата фиксированного документа поддерживается с помощью элемента управления DocumentViewer. Отображение содержимого документа нефиксированного формат поддерживается с помощью трех различных элементов управления FlowDocumentReader, FlowDocumentPageViewer и FlowDocumentScrollViewer, которые сопоставлены разным пользовательским сценариям (см. разделы ниже). Другие элементы управленияWPF предоставляют упрощенную разметку для поддержки использования основного текста (см. ниже раздел Текст в пользовательском интерфейсе).
Элемент управления формата фиксированного документа — DocumentViewer
Элемент управления DocumentViewer предназначен для отображения содержимого FixedDocument. Элемент управления DocumentViewer обеспечивает интуитивно понятный пользовательский интерфейс, который предоставляет встроенную поддержку общих операций, включая вывод на печать, копирование в буфер обмена, масштабирование и возможности поиска текста. Этот элемент управления предоставляет доступ к страницам содержимого с помощью хорошо знакомого механизма прокрутки. Как и все элементы управления, WPF, DocumentViewer поддерживает полное или частичное изменение стиля, что позволяет визуально интегрировать элемент управления, фактически, в любое приложение или среду.
Элемент управления DocumentViewer предназначен для отображения содержимого в режиме только для чтения; редактирование или изменение содержимого недоступно и не поддерживается.
Элементы управления документами нефиксированного формата
Примечание. Более подробно о возможностях документов нефиксированного формата и способах их создания см. в разделе Общие сведения о документе нефиксированного формата.
Отображение содержимого документа фиксированного формата поддерживается тремя элементами управления: FlowDocumentReader, FlowDocumentPageViewer и FlowDocumentScrollViewer.
FlowDocumentReader
FlowDocumentReader включает возможности, позволяющие пользователю динамически выбирать различные режимы просмотра, включая одностраничный (постраничный), двухстраничный (книжный формат) и режим просмотра непрерывной прокрутки («без дна»). Дополнительные сведения об этих режимах просмотра содержатся в разделе FlowDocumentReaderViewingMode. Если не требуется динамическое переключение между режимами просмотра, элементы управления FlowDocumentPageViewer и FlowDocumentScrollViewer предоставляют облегченные средства просмотра содержимого документа нефиксированного формата, закрепленные в отдельном режиме просмотра.
FlowDocumentPageViewer и FlowDocumentScrollViewer
Элемент управления FlowDocumentPageViewer отображает содержимое в режиме постраничного просмотра, в то время как FlowDocumentScrollViewer отображает содержимое в режиме непрерывной прокрутки. Оба элемента управления FlowDocumentPageViewer и FlowDocumentScrollViewer предназначены для определенного режима просмотра. Сравните с элементом управления FlowDocumentReader, который включает возможности, позволяющие пользователю динамически выбирать различные режимы просмотра (представленные перечислением FlowDocumentReaderViewingMode), за счет чего он более ресурсоемкий, чем элементы управления FlowDocumentPageViewer или FlowDocumentScrollViewer.
По умолчанию вертикальная полоса прокрутки отображается всегда, а горизонтальная становится видимой при необходимости. По умолчанию Пользовательский интерфейс объекта FlowDocumentScrollViewer не содержит панели инструментов; однако для включения встроенной панели инструментов можно использовать свойство IsToolBarVisible.
Текст в пользовательском интерфейсе
Помимо добавления в документы, текст очевидно можно использовать в пользовательском интерфейсе приложения, например в формах. WPF содержит несколько элементов управления для составления текста на экране. Каждый элемент управления предназначен для различных сценариев и имеет свой собственный список возможностей и ограничений. В общем случае, объект TextBlock следует применять, когда требуется ограниченная поддержка текста, например, при использовании коротких предложений в пользовательский интерфейс. Объект Label может использоваться, когда требуется минимальная поддержка текста. Дополнительные сведения см. в разделе Общие сведения о TextBlock.
Упаковка документа
API-интерфейсы пространства имен System.IO.Packaging предоставляют эффективные средства для организации данных приложения, содержимого документов и связанных ресурсов в одном контейнере, который обеспечивает простой доступ, портативность и легкость распределения. ZIP-файл является примером типа Package, который может хранить нескольких объектов, как один структурный элемент. API-интерфейсы упаковки обеспечивают реализацию объекта ZipPackage по умолчанию, разработанную с использованием стандарта Open Packaging Convention с архитектурой XML и ZIP-файла. API-интерфейсы упаковки приложения WPF делают простым создание пакетов, хранение в них объектов и доступ к ним. Объект, хранящийся в Package, называется PackagePart («часть»). Пакеты могут также включать подписанные цифровые сертификаты, которые можно использовать для идентификации создателя части и проверки того, что содержимое пакета не было изменено. Пакеты также включают средство PackageRelationship, позволяющее добавлять дополнительные сведения в пакет или связывать их с определенным частями без фактического изменения содержимого существующих частей. Службы пакета также поддерживают Управление правами Microsoft Windows.
Архитектура WPF Package служит основой для большого числа ключевых технологий:
Документы XPS, удовлетворяющие Формат XPS (XML Paper Specification).
Документы открытого XML-формата Microsoft Office «12» (docx).
Пользовательские форматы хранения для разработки собственного приложения.
Основанный на API упаковки, объект XpsDocument специально разработаны для хранения документов с фиксированным содержимым WPF. XpsDocument — это автономный документ, который можно открыть в средстве просмотра, отображенный в элементе управления DocumentViewer, маршрутизированный в очередь печати или непосредственно на вывод XPS-совместимого принтера.
Следующие разделы содержат дополнительные сведения об API-интерфейсыPackage и XpsDocument, предоставляемых с приложением WPF.
Компоненты пакета
API упаковки приложения WPF позволяют организовывать данные приложения и документы в один портативный структурный элемент. ZIP-файл является одним из наиболее общих типов пакетов и типом пакета по умолчанию в приложении WPF. Сам объект Package является абстрактным классом, из которого реализован объект ZipPackage с помощью открытого стандарта архитектуры XML и ZIP-файла. Метод Open использует объект ZipPackage для создания и использования ZIP-файлов по умолчанию. Пакет может содержать три основных типа элементов:
Содержимое приложения, данные, документы и файлы ресурсов. |
|
Сертификат X.509 для идентификации, аутентификации и проверки подлинности. |
|
Добавленные сведения, относящиеся к пакету или отдельной части. |
PackageParts
PackagePart («часть») — это абстрактный класс, который ссылается на объект, хранящийся в объекте Package. В ZIP-файле частям пакета соответствуют отдельные файлы, хранящиеся в ZIP-файле. ZipPackagePart обеспечивает реализацию по умолчанию сериализуемых объектов, хранящихся в объекте ZipPackage. Подобно файловой системе, части, содержащиеся в пакете, хранятся в иерархическом каталоге или в структуре «в стиле папки». Используя API упаковки WPF, приложения могут записывать, хранить и считывать нескольких объектов PackagePart, используя один контейнер ZIP-файла.
PackageDigitalSignatures
В целях безопасности объект PackageDigitalSignature («цифровая подпись») может быть связан с частями внутри пакета. PackageDigitalSignature включает сертификат 509, предоставляющий две возможности:
Идентификация и проверка подлинности создателя части.
Проверка того, что часть не была изменена.
Цифровая подпись не защищает часть от изменения, но проверка цифровой подписи завершится ошибкой, если часть была каким-либо образом изменена. Затем приложение может предпринять соответствующее действие — например, заблокировать открытие части или уведомить пользователя, что часть была изменена и не является безопасной.
PackageRelationships
Объект PackageRelationship («отношение») обеспечивает механизм сопоставления дополнительных сведений с пакетом или частью в пакете. Отношение — это возможность уровня пакета, которая может связать дополнительные сведения с частью, не изменяя фактического содержимого части. Вставка новых данных непосредственно в содержимое части обычно не используются по многим причинам:
Фактический тип части и схема содержимого неизвестны.
Даже если известны, схема содержимого может не предоставлять средств для добавления новых данных.
Часть может быть защищена от любых изменений цифровой подписью или шифрованием.
Отношения пакета предоставляют видимые средства для добавления дополнительных сведений и сопоставления их с отдельными частями или всем пакетом. Отношения пакета используются для двух основных возможностей:
Определение отношений зависимостей из одной части в другую.
Определение отношений данных, добавляющих заметки или другие данные, относящиеся к частям.
Объект PackageRelationship предоставляет быстрые, видимые средства для определения зависимостей и добавления дополнительных сведений, связанных с частью или всем пакетом.
Отношения зависимостей
Отношения зависимостей используются для описания зависимостей, которые одна часть создает с другими. Например, пакет может содержать HTML-часть, включающую один или несколько тегов изображения <img>. Теги изображения ссылаются на изображения, расположенные внутри пакета, как другие части, либо вне пакета, например — доступные через Интернет. Создание объекта PackageRelationship, связанного с файлом HTML, делает обнаружение и доступ к зависимым ресурсам быстрее и проще. Обозреватель или приложение средства просмотра может непосредственно обратиться к отношениям части и сразу начать сборку зависимых ресурсов без знания схемы или синтаксического анализа документа.
Отношения данных
Кроме примечания или комментария объект PackageRelationship может также использоваться для хранения других типов данных, которые будут связаны с частью без необходимости фактического изменения содержимого части.
Документы XPS
Документ Формат XPS (XML Paper Specification) представляет собой пакет, содержащий один или несколько документов фиксированного формата со всеми ресурсами и сведениями, необходимыми для отрисовки. XPS также является собственным форматом файла очереди печати Windows Vista. Объект XpsDocument хранится в стандартном наборе данных ZIP и может включать комбинацию XML и двоичных компонентов, таких как файлы изображений и шрифтов. PackageRelationships используются для определения зависимостей между содержимым и ресурсами, необходимыми для полного отображения документа. Структура XpsDocument предоставляет простое решение документа высокого качества, которое поддерживает повторное использование:
Чтение, запись и хранение содержимого формата фиксированного документа и ресурсов в виде единого, портативного и легко распределяемого файла.
Отображение документов с помощью приложения XPS Viewer.
Вывод документов в собственном формате вывода очереди печати Windows Vista.
Маршрутизация документов непосредственно на XPS-совместимый принтер.
См. также
Задачи
Пример использования свойств TextBlock
Пример использования свойств класса FlowDocument
Основные понятия
Оптимизация производительности: отображение текста
Общие сведения о документе нефиксированного формата
Сериализация и хранение документов