Поделиться через


Документы в WPF

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

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

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

Фиксированные документы предназначены для приложений, требующих точного представления "то, что вы видите, то вы и получите" (WYSIWYG), независимо от используемого оборудования дисплея или принтера. Типичные варианты использования для фиксированных документов включают в себя настольные издательские системы, обработку текста и разметку форм, где соблюдение исходного дизайна страницы имеет решающее значение. В рамках его макета фиксированный документ поддерживает точное размещение элементов содержимого независимо от используемого устройства отображения или печати. Например, страница документа с фиксированной завершенностью, просматриваемая на дисплее с разрешением 96 dpi, будет выглядеть идентично при выводе на лазерный принтер с разрешением 600 dpi, как и при выводе на фотонаборное устройство с разрешением 4800 dpi. Макет страницы остается одинаковым во всех случаях, в то время как качество документа максимально увеличивается до возможностей каждого устройства.

По сравнению с другими типами, потоковые документы предназначены для оптимизации отображения и удобочитаемости, и их лучше всего использовать, когда удобство чтения является основным условием потребления документа. Вместо того чтобы быть закрепленными в одном предопределенном макете, поточные документы динамически настраивают и перераспределяют свое содержимое на основе переменных времени выполнения, таких как размер окна, разрешение устройства и пользовательские предпочтения. Веб-страница — это простой пример документа потока, в котором содержимое страницы динамически отформатировано в соответствии с текущим окном. На основе среды выполнения, потоковые документы оптимизируют просмотр и чтение для пользователя. Например, тот же потоковый документ будет динамически переформатироваться для оптимальной удобочитаемости на 19-дюймовом дисплее с высоким разрешением или небольшом 2x3-дюймовом экране КПК. Кроме того, документы потока имеют ряд встроенных функций, включая поиск, режимы просмотра, которые оптимизируют удобочитаемость, а также возможность изменять размер и внешний вид шрифтов. Смотрите раздел Обзор документа потока для иллюстраций, примеров и подробной информации о документах потока.

Элементы управления документами и макет текста

Платформа .NET Framework предоставляет набор готовых элементов управления, упрощающих использование фиксированных документов, документов потока и общего текста в приложении. Отображение фиксированного содержимого документа поддерживается с помощью элемента управления DocumentViewer. Отображение содержимого документа потока поддерживается тремя различными элементами управления: FlowDocumentReader, FlowDocumentPageViewerи FlowDocumentScrollViewer, которые сопоставляют с различными сценариями пользователей (см. разделы ниже). Другие элементы управления WPF предоставляют упрощенный макет для поддержки общего текста (см. текст в пользовательском интерфейсениже).

Исправлено управление документами — Просмотрщик документов

Элемент управления 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 Conventions с архитектурой XML и ZIP-файла. API упаковки WPF упрощают создание пакетов и хранение и доступ к объектам в них. Объект, хранящийся в Package, называется PackagePart (часть). Пакеты также могут включать подписанные цифровые сертификаты, которые можно использовать для идентификации инициатора части и проверки того, что содержимое пакета не было изменено. Пакеты также включают функцию PackageRelationship, которая позволяет добавлять дополнительные сведения в пакет или связываться с определенными частями, не изменяя содержимое существующих частей. Службы пакетов также поддерживают Microsoft Windows Rights Management (RM).

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

  • Документы XPS, соответствующие спецификации XML Paper (XPS).

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

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

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

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

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

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

Элемент Описание
PackagePart Содержимое приложения, данные, документы и файлы ресурсов.
PackageDigitalSignature [Сертификат X.509] для идентификации, проверки подлинности и валидации.
PackageRelationship Добавлены сведения, связанные с пакетом или определенной частью.

ЧастиПакета

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

PackageDigitalSignatures

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

  1. Определяет и проверяет подлинность исходного элемента.

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

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

СвязиПакетов

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

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

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

  • Часть может быть цифрово подписана или зашифрована, исключая любые изменения.

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

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

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

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

Связи зависимостей

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

Информационные отношения

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

Документы XPS

Документ спецификации XML Paper (XPS) — это пакет, содержащий один или несколько фиксированных документов вместе со всеми ресурсами и сведениями, необходимыми для отрисовки. XPS также является родным форматом файла очереди печати Windows Vista. XpsDocument хранится в стандартном zip-наборе данных и может включать сочетание XML-и двоичных компонентов, таких как файлы изображений и шрифтов. PackageRelationships используются для определения зависимостей между содержимым и ресурсами, необходимыми для полного отображения документа. Дизайн XpsDocument предлагает единое высокоточное документарное решение, которое поддерживает несколько вариантов использования.

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

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

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

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

См. также