Documents dans WPF

Windows Presentation Foundation (WPF) offre un large éventail de fonctionnalités de document qui permettent de créer du contenu haute fidélité conçu pour être plus facilement accessible et lu que dans les générations précédentes de Windows. Outre les fonctionnalités améliorées et la qualité, WPF fournit également des services intégrés pour l’affichage, l’empaquetage et la sécurité des documents. Cette rubrique fournit une introduction aux types de documents WPF et à l’empaquetage de documents.

Types de documents

WPF divise les documents en deux catégories générales en fonction de leur utilisation prévue ; ces catégories de documents sont appelées « documents fixes » et « documents de flux ».

Les documents fixes sont destinés aux applications qui nécessitent une présentation précise « ce que vous voyez est ce que vous obtenez » (WYSIWYG), indépendamment du matériel d’affichage ou d’imprimante utilisé. Les documents fixes sont principalement utilisés pour la PAO (Publication Assistée par Ordinateur), le traitement de texte et la présentation d’un formulaire, où le respect de la conception de la page d’origine est essentiel. Dans le cadre de sa disposition, un document fixe conserve l’emplacement précis des éléments de contenu, indépendamment de l’écran d’affichage ou de l’appareil d’impression utilisé. Par exemple, une page de document fixe affichée en 96 ppp (points par pouce) apparaît de la même manière que lorsqu’elle est imprimée sur une imprimante laser 600 ppp ou une photocomposeuse 4800 ppp. Dans tous les cas, la disposition de la page reste la même, tandis que la qualité du document s’optimise selon les capacités de chaque appareil.

En comparaison, les documents dynamiques sont conçus pour optimiser l’affichage et la lisibilité. Ils trouvent leur meilleure exploitation quand la facilité de lecture est le scénario principal d’utilisation du document. Au lieu d’avoir une disposition prédéfinie, ces documents dynamiques ajustent et refluent dynamiquement leur contenu en fonction des variables d’exécution telles que la taille de la fenêtre, la résolution de l’appareil et les préférences facultatives de l’utilisateur. Une page web est un exemple simple de document dynamique où le contenu est mis en forme dynamiquement pour s’adapter à la fenêtre active. Les documents dynamiques optimisent l’expérience d’affichage et de lecture de l’utilisateur, en fonction de l’environnement d’exécution. Par exemple, le même document dynamique se remet en forme dynamiquement pour une lisibilité optimale sur un écran haute résolution de 19 pouces ou un petit écran de PDA de 2x3 pouces. En outre, les documents dynamiques possèdent plusieurs fonctionnalités intégrées, notamment la recherche, les modes d’affichage qui optimisent la lisibilité et la possibilité de changer la taille et l’apparence des polices. Pour obtenir des illustrations, des exemples et des informations complètes sur les documents dynamiques, consultez Vue d’ensemble des documents dynamiques.

Contrôles de document et disposition du texte

Le .NET Framework fournit un ensemble de contrôles prédéfini qui simplifient l’utilisation de documents fixes, de documents de flux et de texte général dans votre application. L’affichage du contenu de document fixe est pris en charge à l’aide du DocumentViewer contrôle. L’affichage du contenu du document de flux est pris en charge par trois contrôles différents : FlowDocumentReader, FlowDocumentPageVieweret FlowDocumentScrollViewer qui correspondent à différents scénarios utilisateur (voir les sections ci-dessous). D’autres contrôles WPF fournissent une disposition simplifiée pour prendre en charge les utilisations générales du texte (voir Texte dans l’interface utilisateur, ci-dessous).

Contrôle de document fixe - DocumentViewer

Le contrôle est conçu pour afficher FixedDocument du DocumentViewer contenu. Le DocumentViewer contrôle fournit une interface utilisateur intuitive qui offre une prise en charge intégrée des opérations courantes, notamment la sortie d’impression, la copie dans le Presse-papiers, le zoom et les fonctionnalités de recherche de texte. Le contrôle permet d’accéder aux pages de contenu par le biais d’un mécanisme de défilement familier. Comme tous les contrôles WPF, DocumentViewer prend en charge le restyling complet ou partiel, ce qui permet au contrôle d’être intégré visuellement dans pratiquement n’importe quelle application ou environnement.

DocumentViewer est conçu pour afficher du contenu de manière en lecture seule ; la modification ou la modification du contenu n’est pas disponible et n’est pas prise en charge.

Contrôles de document dynamique

Remarque

Pour plus d’informations sur les fonctionnalités de document de flux et sur la façon de les créer, consultez Vue d’ensemble du document de flux.

L’affichage du contenu du document de flux est pris en charge par trois contrôles : FlowDocumentReader, FlowDocumentPageVieweret FlowDocumentScrollViewer.

FlowDocumentReader

FlowDocumentReader inclut des fonctionnalités qui permettent à l’utilisateur de choisir dynamiquement entre différents modes d’affichage, notamment un mode d’affichage monopage (page à la fois), un mode d’affichage à deux pages à l’heure (format de lecture de livres) et un mode d’affichage continu (sans fond). Pour plus d’informations sur ces modes d’affichage, consultez FlowDocumentReaderViewingMode. Si vous n’avez pas besoin de la possibilité de basculer dynamiquement entre différents modes d’affichage et FlowDocumentPageViewerFlowDocumentScrollViewer de fournir des visionneuses de contenu de flux plus légères qui sont fixes dans un mode d’affichage particulier.

FlowDocumentPageViewer et FlowDocumentScrollViewer

FlowDocumentPageViewer affiche le contenu en mode d’affichage de page à temps, tandis qu’il FlowDocumentScrollViewer affiche le contenu en mode de défilement continu. Les deux FlowDocumentPageViewer sont FlowDocumentScrollViewer fixés à un mode d’affichage particulier. Comparez à , qui inclut des fonctionnalités qui permettent à FlowDocumentReaderl’utilisateur de choisir dynamiquement entre différents modes d’affichage (comme fourni par l’énumération FlowDocumentReaderViewingMode ), au coût d’être plus gourmand en ressources que FlowDocumentPageViewer ou FlowDocumentScrollViewer.

Par défaut, une barre de défilement verticale est toujours affichée et une barre de défilement horizontale apparaît si nécessaire. L’interface utilisateur par défaut pour FlowDocumentScrollViewer laquelle il n’inclut pas de barre d’outils ; toutefois, la IsToolBarVisible propriété peut être utilisée pour activer une barre d’outils intégrée.

Texte dans l’interface utilisateur

En plus d’ajouter du texte à des documents, vous pouvez bien évidemment utiliser du texte dans l’interface utilisateur de l’application, notamment dans des formulaires. WPF inclut plusieurs contrôles pour dessiner du texte à l’écran. Chaque contrôle est ciblé sur un scénario différent et dispose de sa propre liste de fonctionnalités et limitations. En règle générale, l’élément TextBlock doit être utilisé lorsque la prise en charge limitée du texte est requise, par exemple une brève phrase dans une interface utilisateur. Label peut être utilisé lorsque la prise en charge minimale du texte est requise. Pour plus d’informations, consultez Vue d’ensemble de TextBlock.

Packaging de documents

Les System.IO.Packaging API fournissent un moyen efficace d’organiser les données d’application, le contenu de document et les ressources associées dans un seul conteneur simple à accéder, portable et facile à distribuer. Un fichier ZIP est un exemple de Package type capable de contenir plusieurs objets sous la forme d’une unité unique. Les API d’empaquetage fournissent une implémentation par défaut ZipPackage conçue à l’aide d’une norme Open Packaging Conventions avec une architecture de fichier XML et ZIP. Les API d’empaquetage WPF facilitent la création de packages, et permettent de stocker et d’accéder aux objets qu’ils contiennent. Un objet stocké dans un Package est appelé PackagePart « partie »). Les packages peuvent également inclure des certificats numériques signés pouvant être utilisés pour identifier le créateur d’une partie, et pour valider que le contenu d’un package n’a pas été modifié. Les packages incluent également une PackageRelationship fonctionnalité qui permet d’ajouter des informations supplémentaires à un package ou associée à des parties spécifiques sans réellement modifier le contenu des parties existantes. Les services de package prennent également en charge Microsoft Windows Rights Management (RM).

L’architecture du package WPF constitue la base d’un certain nombre de technologies clés :

  • Documents XPS conformes à la spécification de papier XML (XPS).

  • Documents au format Microsoft Office "12" Open XML (.docx).

  • Formats de stockage personnalisés pour la conception de vos propres applications.

En fonction des API d’empaquetage, un XpsDocument objet est spécifiquement conçu pour stocker des documents de contenu fixe WPF. Il XpsDocument s’agit d’un document autonome qui peut être ouvert dans une visionneuse, affiché dans un DocumentViewer contrôle, routé vers un spool d’impression ou de sortie directement vers une imprimante compatible XPS.

Les sections suivantes fournissent des informations supplémentaires sur les PackageXpsDocument API fournies avec WPF.

Composants d’un package

Les API d’empaquetage WPF permettent d’organiser les données et documents d’application en une seule unité portable. Un fichier ZIP est l’un des types de packages les plus courants et est le type de package par défaut fourni avec WPF. Package elle-même est une classe abstraite à partir de laquelle ZipPackage est implémentée à l’aide d’une architecture de fichier XML et ZIP standard ouverte. La Open méthode utilise ZipPackage pour créer et utiliser des fichiers ZIP par défaut. Un package peut contenir trois types d’éléments de base :

Élément Description
PackagePart Contenu d’application, données, documents et fichiers de ressources.
PackageDigitalSignature Certificat X.509 pour l’identification, l’authentification et la validation.
PackageRelationship Informations ajoutées relatives au package ou à une partie spécifique.

PackageParts

Un PackagePart (« part ») est une classe abstraite qui fait référence à un objet stocké dans un Package. Dans un fichier ZIP, les parties du package correspondent aux fichiers individuels stockés qu’il contient. ZipPackagePart fournit l’implémentation par défaut pour les objets sérialisables stockés dans un ZipPackage. Comme pour un système de fichiers, les parties contenues dans le package sont stockées dans des répertoires hiérarchiques ou sous forme de dossiers. À l’aide des API d’empaquetage WPF, les applications peuvent écrire, stocker et lire plusieurs PackagePart objets à l’aide d’un seul conteneur de fichiers ZIP.

PackageDigitalSignatures

Pour la sécurité, une PackageDigitalSignature (« signature numérique ») peut être associée à des parties au sein d’un package. A PackageDigitalSignature incorpore un [509] qui fournit deux fonctionnalités :

  1. Identifie et authentifie le créateur de la partie.

  2. Vérifie que la partie n’a pas été modifiée.

La signature numérique n’empêche pas la modification d’une partie, mais un contrôle de validation par rapport à la signature numérique échoue si la partie est modifiée d’une façon ou d’une autre. L’application peut alors exécuter l’action appropriée : par exemple, bloquer l’ouverture de la partie, ou notifier l’utilisateur que la partie a été modifiée et n’est pas sécurisée.

PackageRelationships

Une PackageRelationship (« relation ») fournit un mécanisme permettant d’associer des informations supplémentaires au package ou à une partie du package. Une relation est une fonctionnalité de package qui peut associer des informations supplémentaires à une partie sans en modifier le contenu actuel. L’insertion directe de nouvelles données dans le contenu de la partie n’est généralement pas très pratique dans de nombreux cas :

  • Le type réel de la partie et son schéma de contenu ne sont pas connus.

  • Même s’il est connu, le schéma de contenu peut ne pas fournir de moyen d’ajouter de nouvelles informations.

  • La partie peut être chiffrée ou signée numériquement, empêchant toute modification.

Les relations de package fournissent un moyen détectable d’ajouter et d’associer des informations supplémentaires à des parties individuelles ou à l’ensemble du package. Les relations de package sont utilisées pour deux fonctions principales :

  1. Définition des relations de dépendance d’une partie à l’autre.

  2. Définition des relations d’information qui ajoutent des notes ou d’autres données relatives à la partie.

Un PackageRelationship moyen rapide et détectable de définir des dépendances et d’ajouter d’autres informations associées à une partie du package ou au package dans son ensemble.

Relations de dépendance

Les relations de dépendance sont utilisées pour décrire les dépendances qu’une partie crée sur d’autres parties. Par exemple, un package peut contenir une partie HTML qui inclut une ou plusieurs <balises d’image img> . Les balises d’image font référence à des images situées sur d’autres parties internes au package ou externes au package (comme celles accessibles sur Internet). La création d’un PackageRelationship fichier HTML associé permet de découvrir et d’accéder aux ressources dépendantes rapidement et facilement. Une application de navigateur ou de visionneuse peut accéder directement aux relations de parties et commencer immédiatement l’assemblage des ressources dépendantes sans connaître le schéma ou analyser le document.

Relations d’informations

À l’instar d’une note ou d’une annotation, il PackageRelationship peut également être utilisé pour stocker d’autres types d’informations à associer à une partie sans avoir à modifier réellement le contenu de la partie proprement dite.

Documents XPS

Le document XPS (XML Paper Specification) est un package qui contient un ou plusieurs documents fixes, ainsi que toutes les ressources et informations requises pour le rendu. XPS est également le format de fichier de pool d’impression Windows Vista natif. Un XpsDocument fichier est stocké dans un jeu de données ZIP standard et peut inclure une combinaison de composants XML et binaires, tels que des fichiers image et police. Des PackageRelationships sont utilisés pour définir les dépendances entre le contenu et les ressources nécessaires pour afficher le document. La XpsDocument conception fournit une solution de document haute fidélité unique qui prend en charge plusieurs utilisations :

  • Lecture, écriture et stockage de ressources et de contenu de document fixe sous la forme d’un fichier unique, portable et facile à distribuer.

  • Affichage de documents avec l’application Visionneuse XPS.

  • Sortie de documents dans le format de sortie du pool d’impression natif de Windows Vista.

  • Routage des documents directement vers une imprimante compatible XPS.

Voir aussi