Partager via


Documents dans Windows Presentation Foundation

Mise à jour : novembre 2007

Windows Presentation Foundation (WPF) offre une large gamme de fonctionnalités liées aux documents qui permettent de créer du contenu de grande qualité conçu pour être accédé et lu plus facilement que sur les générations précédentes de Windows. En plus d'une amélioration des capacités et de la qualité, WPF fournit également des services intégrés pour l'affichage, le conditionnement et la sécurité des documents. Cette rubrique fournit une introduction sur les types et le conditionnement des documents WPF.

Cette rubrique comprend les sections suivantes.

  • Types de documents
  • Contrôles de document et disposition du texte
  • Conditionnement des documents
  • Documents XPS
  • Rubriques connexes

Types de documents

WPF divise les documents en deux grandes catégories basées sur leur utilisation prévue ; ces catégories de documents sont appelées « documents fixes » et « documents dynamiques ».

Les documents fixes sont prévus pour les applications qui requièrent une présentation WYSIWYG ("What You See Is What You Get, "tel écrit, tel écran") précise, indépendamment du matériel d'affichage ou d'impression utilisé. Les documents fixes sont principalement utilisés pour la Publication Assistée par Ordinateur (PAO),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 de position précis des éléments de contenu indépendamment du périphérique d'affichage ou d'impression utilisé. Par exemple, un document fixe affiché en 96 points par pouce (ppp) apparaît de la même manière que lorsqu'il est imprimé sur une imprimante laser 600 ppp ou une photocomposeuse 4800 ppp. Dans tous les cas, la disposition de la page reste la même, pendant que la qualité du document s'optimise selon les capacités de chaque périphérique.

En comparaison, les documents dynamiques sont conçus pour optimiser l'affichage et la lisibilité et trouvent leur meilleure utilisation lorsque la facilité de lecture est le scénario principal de consommation du document. Au lieu d'avoir une disposition prédéfinie, ces documents ajustent et refluent dynamiquement leur contenu en fonction des variables d'exécution telles que la taille de la fenêtre, la résolution du périphérique et les préférences de l'utilisateur (en option). Une page Web est un exemple simple de page 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 pour l'utilisateur, en fonction de l'environnement au moment de l'exécution. Par exemple, le même document dynamique se remettra en forme dynamiquement pour une lisibilité optimale sur un écran haute résolution de 19 pouces ou un petit écran d'ANP de 2x3 pouces. En outre, les documents dynamiques possèdent plusieurs fonctionnalités intégrées, par exemple la recherche, les modes d'affichage et la possibilité de changer la taille et l'apparence des polices. Consultez Vue d'ensemble des documents dynamiques pour des illustrations, des exemples et plus d'informations sur les documents dynamiques.

Contrôles de document et disposition du texte

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

Contrôle de document fixe - DocumentViewer

Le contrôle DocumentViewer est conçu pour afficher le contenu d'un FixedDocument. Le contrôle DocumentViewer fournit une interface utilisateur intuitive qui fournit une prise en charge intégrée pour les opérations courantes telles que la sortie imprimante, la copie dans le Presse-papiers, le zoom et les fonctions de recherche de texte. Le contrôle fournit l'accès 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 la modification complète ou partielle du style, qui permet au contrôle d'être intégré visuellement dans pratiquement n'importe quelle application ou environnement.

DocumentViewer est conçu pour afficher le contenu en lecture seule, l'édition ou la modification de contenu n'est pas disponible ni pris en charge.

Contrôles de document dynamique

Remarque : pour plus d'informations sur les fonctionnalités des documents dynamiques et sur la manière de les créer, consultez Vue d'ensemble des documents dynamiques.

L'affichage du contenu d'un document fixe est pris en charge par trois contrôles : FlowDocumentReader, FlowDocumentPageViewer et FlowDocumentScrollViewer.

FlowDocumentReader

FlowDocumentReader inclut des fonctionnalités qui permettent à l'utilisateur de choisir dynamiquement entre plusieurs modes d'affichage : mode d'affichage page unique (page par page), deux pages à la fois (format livre ouvert) et mode d'affichage défilement continu (sans marge inférieure). Pour plus d'informations sur les modes d'affichage, consultez FlowDocumentReaderViewingMode. Si vous n'avez pas besoin de basculer dynamiquement entre les différents modes d'affichage, FlowDocumentPageViewer et FlowDocumentScrollViewer fournissent des versions plus allégées d'afficheurs de contenu dynamique qui sont réglées sur un mode d'affichage particulier.

FlowDocumentPageViewer et FlowDocumentScrollViewer

FlowDocumentPageViewer affiche le contenu en mode page par page, alors que FlowDocumentScrollViewer affiche le contenu en mode de défilement continu. FlowDocumentPageViewer et FlowDocumentScrollViewer correspondent chacun à un mode d'affichage particulier. En revanche, FlowDocumentReader inclut des fonctionnalités qui permettent à l'utilisateur de choisir dynamiquement entre plusieurs modes d'affichage (tels que ceux fournis par l'énumération FlowDocumentReaderViewingMode), mais qui en font une application qui consomment beaucoup plus de 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 n'inclut pas de barre d'outils ; toutefois, vous pouvez utiliser la propriété IsToolBarVisible pour activer une barre d'outils intégrée.

Texte dans l'interface utilisateur

Outre l'ajout de texte à des documents, le texte peut évidemment être utilisé en tant que formulaires dans l'interface utilisateur de l'application. WPF inclut plusieurs contrôles pour dessiner du texte à l'écran. Chaque contrôle est ciblé pour un scénario différent et dispose de sa propre liste de fonctionnalités et limitations. En général, l'élément TextBlock doit être utilisé lorsque la prise en charge de texte limitée est requise, telle qu'une phrase courte dans un interface utilisateur (UI). Label peut être utilisé quand la prise en charge de texte minimale est requise. Pour plus d'informations, consultez Vue d'ensemble de TextBlock.

Conditionnement des documents

Les API System.IO.Packaging offrent un moyen efficace d'organiser les données d'application, le contenu de document et les ressources associées dans un conteneur unique facile d'accès, portable et facile à distribuer. Un fichier ZIP est un exemple d'un type de Package capable de contenir plusieurs objets dans une seule unité. Les API de conditionnement fournissent une implémentation ZipPackage par défaut conçue pour utiliser une norme Open Packaging Conventions avec une architecture de fichiers XML et ZIP. Les API de conditionnement WPF simplifient la création de packages, ainsi que le stockage et l'accès aux objets s'y trouvant. Un objet stocké dans un Package est référencé sous le nom de PackagePart ("partie"). Les packages peuvent également inclure des certificats signés numériquement pouvant être utilisés pour identifier le créateur d'une partie, et pour valider que les contenus d'un package n'ont pas été modifiés. Les packages comprennent également une fonctionnalité de PackageRelationship qui permet d'ajouter des informations supplémentaires à un package ou d'associer avec des parties spécifiques sans modifier réellement le contenu des parties existantes. Les services de package prennent aussi en charge Gestion des droits (RM, Rights Management) Microsoft Windows.

L'architecture de package WPF sert de base à de nombreuses technologies clés :

  • Documents XPS conformes au type XML Paper Specification (XPS).

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

  • Formats de stockage personnalisés pour votre propre conception d'application.

En fonction des APIs de packaging, un XpsDocument est spécialement conçu pour stocker du contenu de documents fixes WPF. Un XpsDocument est un document autonome qui peut être ouvert dans une visionneuse, affiché dans un contrôle DocumentViewer, routé vers un spoule d'impression, ou envoyé directement sur une imprimante compatible avec le format XPS.

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

Composants d'un package

Les APIs de conditionnement WPF permettent d'organiser les données et documents d'une application dans une seule unité portable. Le fichier ZIP est l'un des types de packages les plus courants, c'est le type de package par défaut fourni avec WPF. Package est une classe abstraite à partir de laquelle ZipPackage est implémenté à l'aide d'une architecture de fichier ouvert standard XML et ZIP. La méthode Open utilise ZipPackage pour créer et utiliser les fichiers ZIP par défaut. Un package peut contenir trois types d'éléments de base :

PackagePart

Contenu d'application, données, documents et fichiers de ressources.

PackageDigitalSignature

Certificat X.509 pour l'identification, l'authentification et la validation.

PackageRelationship

Des informations ajoutées relatives au package ou à une partie spécifique.

PackageParts

Une PackagePart (« partie ») 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 dans le fichier ZIP. ZipPackagePart fournit l'implémentation par défaut pour les objets sérialisés stockés dans un ZipPackage. Similaire à un système de fichiers, les parties contenues dans le package sont triées en répertoires hiérarchiques ou « de type dossier ». En utilisant les APIs de conditionnement WPF, les applications peuvent écrire, stocker et lire plusieurs objets PackagePart à l'aide d'un conteneur de fichier ZIP unique.

PackageDigitalSignatures

Pour des raisons de sécurité, une PackageDigitalSignature (« signature numérique ») peut être associée aux parties dans un package. Une PackageDigitalSignature incorpore un 509 qui fournit deux fonctionnalités :

  1. Identifie et authentifie l'expéditeur de la partie.

  2. Valide que la partie n'a pas été modifiée.

La signature numérique n'empêche pas la modification de la partie, mais un contrôle de validation contre la signature numérique échoue si la partie est modifiée d'une façon ou d'une autre. L'application exécute alors 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 avec le package ou une partie du package. Une relation est une fonctionnalité de package qui peut associer des informations supplémentaires avec une partie sans modifier le contenu actuel de la partie. 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 actuel 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 des informations supplémentaires.

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

Les relations de package fournissent un moyen détectable d'ajouter et d'associer des informations supplémentaires avec des parties individuelles ou le package complet. Les relations de package sont utilisées pour deux fonctions principales :

  1. Définir les relations de dépendance d'une partie à l'autre.

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

Une PackageRelationship fournit un moyen rapide et détectable de détection des dépendances et d'ajout d'informations associées à tout ou partie du package.

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 comprenant une ou plusieurs balises d'image <img>. Les balises d'image font référence à des images situées sur d'autres parties internes ou externes au package (comme étant accessibles sur Internet). La création d'une PackageRelationship associée avec un fichier HTML accélère et facilite la découverte et l'accès des ressources dépendantes. Une application de navigation ou de visionnage 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

Similaire à une note ou annotation, une PackageRelationship peut également être utilisée pour stocker d'autres types d'informations à associer à une partie, sans avoir besoin de réellement modifier le contenu de la partie même.

Documents XPS

Un document XML Paper Specification (XPS) est un package qui contient un ou plusieurs documents fixes avec toutes les ressources et informations nécessaires pour le rendu. XPS est également le format de fichier du spoule d'impression natif de Windows Vista. Un XpsDocument est stocké dans un groupe de données ZIP standard, et peut inclure une combinaison de composants XML et binaires, tels que des fichiers d'image ou de police. Les PackageRelationships sont utilisées pour définir les dépendances entre le contenu et les ressources nécessaires au rendu complet du document. La conception du XpsDocument offre une solution haute fidélité de document unique prenant en charge plusieurs utilisations :

  • Lecture, écriture et stockage de contenu et de ressources de document fixe en tant que fichier unique, portable et facile à distribuer.

  • Affichage de documents avec l'application de visionneuse XPS.

  • Copie de documents au format de sortie natif du spoule d'impression de Windows Vista.

  • Routage direct de documents vers une imprimante compatible avec le format XPS.

Voir aussi

Tâches

Propriétés TextBlock, exemple

Propriétés FlowDocument, exemple

Concepts

Optimisation des performances : texte

Vue d'ensemble des documents dynamiques

Vue d'ensemble de l'impression

Sérialisation et stockage de documents

Référence

FixedDocument

FlowDocument

XpsDocument

ZipPackage

ZipPackagePart

PackageRelationship

DocumentViewer