Документы в WPF

Windows Presentation Foundation (WPF) предлагает широкий диапазон свойств документа, который позволяет создавать содержимое высокого качества, предназначенное для более легкого доступа и чтения, чем в предыдущих поколениях Windows. В дополнение к расширенным возможностям и качеству приложение WPF также предоставляет интегрированные службы для отображения документов, упаковки и безопасности. Этот раздел содержит введение в типы документов WPF и упаковку документов.

В этом разделе содержатся следующие подразделы.

  • Типы документов
  • Элементы управления документом и разметка текста
  • Упаковка документа
  • Документы XPS
  • Связанные разделы

Типы документов

Приложение WPF разделяет документы на две основные категории на основе их предполагаемого использования; эти категории документов называются "документы фиксированного формата" и "документы нефиксированного формата".

Документы фиксированного формата предназначены для приложений, требующих точного представления в режиме "what you see is what you get" (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.

По умолчанию вертикальная полоса прокрутки отображается всегда, а горизонтальная становится видимой при необходимости. По умолчанию UI объекта FlowDocumentScrollViewer не содержит панели инструментов; однако для включения встроенной панели инструментов можно использовать свойство IsToolBarVisible.

Текст в пользовательском интерфейсе

Помимо добавления в документы, текст, разумеется, может быть использован в пользовательском интерфейсе приложения, как, например, формы. В WPF представлен ряд элементов управления для перемещения текста на экран. Каждый элемент управления предназначен для различных скриптов и содержит собственный список функций и ограничений. В целом, элемент TextBlock следует использовать, если требуется ограниченная поддержка текста, например для короткого предложения, которое нужно вставить в user interface (UI). Label может использоваться, если необходима минимальная поддержка текста. Дополнительные сведения см. в разделе Общие сведения о TextBlock.

Упаковка документа

APIs пространства имен System.IO.Packaging предоставляют эффективные средства для организации данных приложения, содержимого документов и связанных ресурсов в одном контейнере, который обеспечивает простой доступ, портативность и легкость распределения. ZIP-файл является примером типа Package, который может хранить нескольких объектов, как один структурный элемент. APIs упаковки обеспечивают реализацию объекта ZipPackage по умолчанию, разработанную с использованием стандарта Open Packaging Convention с архитектурой XML и ZIP-файла. APIs упаковки приложения WPF делают простым создание пакетов, хранение в них объектов и доступ к ним. Объект, хранящийся в Package, называется PackagePart ("часть"). Пакеты могут также включать подписанные цифровые сертификаты, которые можно использовать для идентификации создателя части и проверки того, что содержимое пакета не было изменено. Пакеты также включают средство PackageRelationship, позволяющее добавлять дополнительные сведения в пакет или связывать их с определенным частями без фактического изменения содержимого существующих частей. Службы пакета также поддерживают Microsoft Windows Rights Management (RM).

Архитектура WPF Package служит основой для большого числа ключевых технологий:

  • Документы XPS, удовлетворяющие XML Paper Specification (XPS).

  • Документы открытого XML-формата Microsoft Office "12" (docx).

  • Пользовательские форматы хранения для разработки собственного приложения.

Основанный на API упаковки, объект XpsDocument специально разработаны для хранения документов с фиксированным содержимым WPF. XpsDocument — это автономный документ, который можно открыть в средстве просмотра, отображенный в элементе управления DocumentViewer, маршрутизированный в очередь печати или непосредственно на вывод XPS-совместимого принтера.

Следующие разделы содержат дополнительные сведения об APIs Package и XpsDocument, предоставляемых с приложением WPF.

Компоненты пакета

API упаковки приложения WPF позволяют организовывать данные приложения и документы в один портативный структурный элемент. ZIP-файл является одним из наиболее распространенных типов пакетов и по умолчанию используется с WPF. Package ― это абстрактный класс, из которого реализуется ZipPackage с использованием открытой стандартной архитектуры XML и ZIP-файлов. Метод Open использует объект ZipPackage для создания и использования ZIP-файлов по умолчанию. Пакет может содержать три основных типа элементов:

PackagePart

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

PackageDigitalSignature

Сертификат X.509 для идентификации, аутентификации и проверки подлинности.

PackageRelationship

Добавленные сведения, относящиеся к пакету или отдельной части.

PackageParts

PackagePart ("часть") — это абстрактный класс, который ссылается на объект, хранящийся в объекте Package. В ZIP-файле части пакета соответствуют отдельным файлам, содержащимся в ZIP-файле. ZipPackagePart предоставляет реализацию по умолчанию для сериализуемых объектов, хранящихся в ZipPackage. Подобно файловой системе, части, содержащиеся в пакете, хранятся в иерархическом каталоге или в структуре "в стиле папки". Используя API упаковки WPF, приложения могут записывать, хранить и считывать нескольких объектов PackagePart, используя один контейнер ZIP-файла.

PackageDigitalSignatures

В целях безопасности объект PackageDigitalSignature ("цифровая подпись") может быть связан с частями внутри пакета. PackageDigitalSignature включает сертификат 509, предоставляющий две возможности:

  1. Идентификация и проверка подлинности создателя части.

  2. Проверка того, что часть не была изменена.

Цифровая подпись не защищает часть от изменения, но проверка цифровой подписи завершится ошибкой, если часть была каким-либо образом изменена. Затем приложение может предпринять соответствующее действие — например, заблокировать открытие части или уведомить пользователя, что часть была изменена и не является безопасной.

PackageRelationships

Объект PackageRelationship ("отношение") обеспечивает механизм сопоставления дополнительных сведений с пакетом или частью в пакете. Отношение — это возможность уровня пакета, которая может связать дополнительные сведения с частью, не изменяя фактического содержимого части. Вставка новых данных непосредственно в содержимое части обычно не используются по многим причинам:

  • Фактический тип части и схема содержимого неизвестны.

  • Даже если известны, схема содержимого может не предоставлять средств для добавления новых данных.

  • Часть может быть защищена от любых изменений цифровой подписью или шифрованием.

Отношения пакета предоставляют видимые средства для добавления дополнительных сведений и сопоставления их с отдельными частями или всем пакетом. Отношения пакета используются для двух основных возможностей:

  1. Определение отношений зависимостей из одной части в другую.

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

Объект PackageRelationship предоставляет быстрые, видимые средства для определения зависимостей и добавления дополнительных сведений, связанных с частью или всем пакетом.

Отношения зависимостей

Отношения зависимостей используются для описания зависимостей, которые одна часть создает с другими. Например, пакет может содержать HTML-часть, включающую один или несколько тегов изображения <img>. Теги изображения ссылаются на изображения, расположенные внутри пакета, как другие части, либо вне пакета, например — доступные через Интернет. Создание объекта PackageRelationship, связанного с файлом HTML, делает обнаружение и доступ к зависимым ресурсам быстрее и проще. Обозреватель или приложение средства просмотра может непосредственно обратиться к отношениям части и сразу начать сборку зависимых ресурсов без знания схемы или синтаксического анализа документа.

Отношения данных

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

Документы XPS

Документ XML Paper Specification (XPS) ― это пакет, содержащий один или несколько документов фиксированного формата вместе со всеми ресурсами и сведениями, необходимыми для отрисовки. XPS также является собственным форматом файла очереди печати для Windows Vista. Объект XpsDocument хранится в стандартном наборе данных ZIP; он может включать комбинацию XML и двоичных компонентов, таких как файлы изображений и шрифтов. Для определения зависимостей между содержимым и ресурсами, необходимыми для полного отображения документа, используются связи PackageRelationships. Структура XpsDocument предоставляет простое решение документа высокого качества, которое поддерживает повторное использование:

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

  • Отображение документов с помощью приложения XPS Viewer.

  • Вывод документов в собственном формате вывода очереди печати Windows Vista.

  • Маршрутизация документов непосредственно на XPS-совместимый принтер.

См. также

Ссылки

FixedDocument

FlowDocument

XpsDocument

ZipPackage

ZipPackagePart

PackageRelationship

DocumentViewer

Основные понятия

Оптимизация производительности: отображение текста

Общие сведения о документе нефиксированного формата

Общие сведения о печати

Сериализация и хранение документов