Documentos en WPFDocuments in WPF

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)ofrece una amplia gama de características de documentos que permiten la creación de contenido de alta fidelidad que está diseñado para ser más fácilmente accesible y leído que en generaciones anteriores de Windows.offers a wide range of document features that enable the creation of high-fidelity content that is designed to be more easily accessed and read than in previous generations of Windows. Además de las capacidades y la calidad mejoradas, WPFWPF también proporciona servicios integrados de presentación, empaquetado y seguridad de documentos.In addition to enhanced capabilities and quality, WPFWPF also provides integrated services for document display, packaging, and security. En este tema se proporciona una introducción a los tipos de documentos y el empaquetado de documentos de WPFWPF.This topic provides an introduction to WPFWPF document types and document packaging.

Tipos de documentosTypes of Documents

WPFWPF divide los documentos en dos categorías amplias según su uso previsto; estas categorías de documentos se denominan "documentos fijos" y "documentos dinámicos".divides documents into two broad categories based on their intended use; these document categories are termed "fixed documents" and "flow documents."

Los documentos fijos están diseñados para aplicaciones que requieren una presentación precisa de "lo que ves es lo que obtienes" (WYSIWYG), independientemente del hardware de la pantalla o de la impresora utilizado.Fixed documents are intended for applications that require a precise "what you see is what you get" (WYSIWYG) presentation, independent of the display or printer hardware used. Entre los usos típicos de los documentos fijos se incluyen la publicación de escritorio, el procesamiento de textos y el diseño de formularios, donde es fundamental no apartarse del diseño de página original.Typical uses for fixed documents include desktop publishing, word processing, and form layout, where adherence to the original page design is critical. Como parte de su diseño, un documento fijo mantiene la colocación posicional precisa de los elementos de contenido, independientemente de la pantalla o el dispositivo de impresión en uso.As part of its layout, a fixed document maintains the precise positional placement of content elements independent of the display or print device in use. Por ejemplo, una página de un documento fijo que se vea en una pantalla de 96 ppp, aparecerá exactamente igual cuando se imprima en una impresora láser de 600 ppp o en un fotocomponedor de 4800 ppp.For example, a fixed document page viewed on 96 dpi display will appear exactly the same when it is output to a 600 dpi laser printer as when it is output to a 4800 dpi phototypesetter. El diseño de página sigue siendo el mismo en todos los casos, mientras que la calidad del documento se maximiza según las capacidades de cada dispositivo.The page layout remains the same in all cases, while the document quality maximizes to the capabilities of each device.

En comparación, los documentos dinámicos están diseñados para optimizar su presentación y legibilidad, y son óptimos para su uso cuando la facilidad de lectura es el escenario de consumo principal del documento.By comparison, flow documents are designed to optimize viewing and readability and are best utilized when ease of reading is the primary document consumption scenario. En lugar de establecer un diseño predefinido, los documentos dinámicos ajustan y redistribuyen dinámicamente su contenido basándose en variables en tiempo de ejecución, como el tamaño de la ventana, la resolución del dispositivo y las preferencias opcionales del usuario.Rather than being set to one predefined layout, flow documents dynamically adjust and reflow their content based on run-time variables such as window size, device resolution, and optional user preferences. Una página web es un ejemplo sencillo de un documento dinámico donde se da formato al contenido de la página de manera dinámica para ajustarse a la ventana actual.A Web page is a simple example of a flow document where the page content is dynamically formatted to fit the current window. Los documentos dinámicos optimizan la experiencia de visualización y lectura para el usuario, según el entorno en tiempo de ejecución.Flow documents optimize the viewing and reading experience for the user, based on the runtime environment. Por ejemplo, el mismo documento dinámico cambiará de formato de manera dinámica para mejorar la legibilidad óptima en una pantalla de 19 pulgadas de alta resolución o en una pantalla de PDA pequeña de 2×3 pulgadas.For example, the same flow document will dynamically reformat for optimal readability on either high-resolution 19-inch display or a small 2x3-inch PDA screen. Además, los documentos dinámicos tienen varias características integradas, como la búsqueda, los modos de visualización que optimizan la legibilidad, y la capacidad de cambiar el tamaño y el aspecto de las fuentes.In addition, flow documents have a number of built in features including search, viewing modes that optimize readability, and the ability to change the size and appearance of fonts. Consulte Información general sobre documentos dinámicos para ver ilustraciones, ejemplos e información detallada sobre los documentos dinámicos.See Flow Document Overview for illustrations, examples, and in-depth information on flow documents.

Controles de documentos y diseño del textoDocument Controls and Text Layout

.NET Framework proporciona un conjunto de controles predefinidos que simplifican el uso de documentos fijos, documentos de flujo y texto general dentro de la aplicación.The .NET Framework provides a set of pre-built controls that simplify using fixed documents, flow documents, and general text within your application. La visualización del contenido fijo DocumentViewer del documento se admite mediante el control.The display of fixed document content is supported using the DocumentViewer control. La visualización del contenido del documento FlowDocumentReader FlowDocumentPageViewerde FlowDocumentScrollViewer flujo es compatible con tres controles diferentes: , , y que se asignan a diferentes escenarios de usuario (consulte las secciones siguientes).Display of flow document content is supported by three different controls: FlowDocumentReader, FlowDocumentPageViewer, and FlowDocumentScrollViewer which map to different user scenarios (see sections below). Otros controles de WPFWPF proporcionan un diseño simplificado para admitir los usos de texto generales (consulte Texto en la interfaz de usuario más adelante).Other WPFWPF controls provide simplified layout to support general text uses (see Text in the User Interface, below).

Control de documentos fijos: DocumentViewerFixed Document Control - DocumentViewer

El DocumentViewer control está FixedDocument diseñado para mostrar contenido.The DocumentViewer control is designed to display FixedDocument content. El DocumentViewer control proporciona una interfaz de usuario intuitiva que proporciona compatibilidad integrada para operaciones comunes, como la salida de impresión, copiar en el portapapeles, zoom y funciones de búsqueda de texto.The DocumentViewer control provides an intuitive user interface that provides built-in support for common operations including print output, copy to clipboard, zoom, and text search features. El control proporciona acceso a las páginas de contenido a través de un mecanismo de desplazamiento conocido.The control provides access to pages of content through a familiar scrolling mechanism. Al WPFWPF igual DocumentViewer que todos los controles, admite el restyling completo o parcial, lo que permite que el control se integre visualmente en prácticamente cualquier aplicación o entorno.Like all WPFWPF controls, DocumentViewer supports complete or partial restyling, which enables the control to be visually integrated into virtually any application or environment.

DocumentViewerestá diseñado para mostrar contenido de una manera de solo lectura; edición o modificación de contenido no está disponible y no es compatible.DocumentViewer is designed to display content in a read-only manner; editing or modification of content is not available and is not supported.

Controles de documentos dinámicosFlow Document Controls

Nota

Para obtener información más detallada sobre las características de documento de flujo y cómo crearlas, consulte Resumen del documentode flujo .For more detailed information on flow document features and how to create them, see Flow Document Overview.

La visualización del contenido del FlowDocumentReaderdocumento FlowDocumentPageViewerde FlowDocumentScrollViewerflujo es compatible con tres controles: , , y .Display of flow document content is supported by three controls: FlowDocumentReader, FlowDocumentPageViewer, and FlowDocumentScrollViewer.

FlowDocumentReaderFlowDocumentReader

FlowDocumentReaderincluye características que permiten al usuario elegir dinámicamente entre varios modos de visualización, incluido un modo de visualización de una sola página (página a la vez), un modo de visualización de dos páginas a la vez (formato de lectura de libros) y un modo de visualización de desplazamiento continuo (sin fondo).FlowDocumentReader includes features that enable the user to dynamically choose between various viewing modes, including a single-page (page-at-a-time) viewing mode, a two-page-at-a-time (book reading format) viewing mode, and a continuous scrolling (bottomless) viewing mode. Para obtener más información sobre FlowDocumentReaderViewingModeestos modos de visualización, consulte .For more information about these viewing modes, see FlowDocumentReaderViewingMode. Si no necesita la capacidad de cambiar dinámicamente FlowDocumentPageViewer entre FlowDocumentScrollViewer diferentes modos de visualización y proporcionar visores de contenido de flujo más ligeros que se fijan en un modo de visualización determinado.If you do not need the ability to dynamically switch between different viewing modes, FlowDocumentPageViewer and FlowDocumentScrollViewer provide lighter-weight flow content viewers that are fixed in a particular viewing mode.

FlowDocumentPageViewer y FlowDocumentScrollViewerFlowDocumentPageViewer and FlowDocumentScrollViewer

FlowDocumentPageViewermuestra el contenido en modo de visualización FlowDocumentScrollViewer de página a página, mientras que muestra el contenido en modo de desplazamiento continuo.FlowDocumentPageViewer shows content in page-at-a-time viewing mode, while FlowDocumentScrollViewer shows content in continuous scrolling mode. Ambos FlowDocumentPageViewer FlowDocumentScrollViewer y se fijan a un modo de visualización determinado.Both FlowDocumentPageViewer and FlowDocumentScrollViewer are fixed to a particular viewing mode. Comparar FlowDocumentReadercon , que incluye características que permiten al usuario elegir dinámicamente FlowDocumentReaderViewingMode entre varios modos de visualización FlowDocumentPageViewer FlowDocumentScrollViewer(según lo proporcionado por la enumeración), a costa de ser más intensivo en recursos que o .Compare to FlowDocumentReader, which includes features that enable the user to dynamically choose between various viewing modes (as provided by the FlowDocumentReaderViewingMode enumeration), at the cost of being more resource intensive than FlowDocumentPageViewer or FlowDocumentScrollViewer.

De manera predeterminada, siempre se muestra una barra de desplazamiento vertical y una barra de desplazamiento horizontal se vuelve visible cuando es necesario.By default, a vertical scrollbar is always shown, and a horizontal scrollbar becomes visible if needed. El IUUI valor FlowDocumentScrollViewer predeterminado para no incluye una barra de herramientas; sin IsToolBarVisible embargo, la propiedad se puede utilizar para habilitar una barra de herramientas integrada.The default IUUI for FlowDocumentScrollViewer does not include a toolbar; however, the IsToolBarVisible property can be used to enable a built-in toolbar.

Texto en la interfaz de usuarioText in the User Interface

Además de agregar texto a documentos, el texto, obviamente, puede usarse en la UI de una aplicación, como en formularios.Besides adding text to documents, text can obviously be used in application UI such as forms. WPFWPF incluye varios controles para dibujar texto en la pantalla.includes multiple controls for drawing text to the screen. Cada control se destina a un escenario diferente y tiene su propia lista de características y limitaciones.Each control is targeted to a different scenario and has its own list of features and limitations. En general, TextBlock el elemento debe utilizarse cuando se requiere compatibilidad interfaz de usuario (UI)user interface (UI)limitada con texto, como una breve frase en un archivo .In general, the TextBlock element should be used when limited text support is required, such as a brief sentence in a interfaz de usuario (UI)user interface (UI). Labelse puede utilizar cuando se requiere un soporte de texto mínimo.Label can be used when minimal text support is required. Para obtener más información, consulte Información general sobre TextBlock.For more information, see TextBlock Overview.

Empaquetado de documentosDocument Packaging

Las System.IO.Packaging API proporcionan un medio eficaz para organizar los datos de la aplicación, el contenido del documento y los recursos relacionados en un único contenedor que es fácil de acceder, portátil y fácil de distribuir.The System.IO.Packaging APIs provide an efficient means to organize application data, document content, and related resources in a single container that is simple to access, portable, and easy to distribute. Un archivo ZIP es Package un ejemplo de un tipo capaz de contener varios objetos como una sola unidad.A ZIP file is an example of a Package type capable of holding multiple objects as a single unit. Las API de empaquetado ZipPackage proporcionan una implementación predeterminada diseñada mediante un estándar Open Packaging Conventions con arquitectura de archivos XML y ZIP.The packaging APIs provide a default ZipPackage implementation designed using an Open Packaging Conventions standard with XML and ZIP file architecture. Las WPFWPF API de empaquetado facilitan la creación de paquetes y el almacenamiento y el acceso a objetos dentro de ellos.The WPFWPF packaging APIs make it simple to create packages, and to store and access objects within them. Un objeto almacenado Package en a PackagePart se conoce como una ("parte").An object stored in a Package is referred to as a PackagePart ("part"). Los paquetes también pueden incluir certificados digitales firmados que pueden utilizarse para identificar al originador de un elemento y para validar que no se ha modificado el contenido de un paquete.Packages can also include signed digital certificates that can be used to identify the originator of a part and to validate that the contents of a package have not been modified. Los paquetes PackageRelationship también incluyen una característica que permite agregar información adicional a un paquete o asociarse con partes específicas sin modificar realmente el contenido de las piezas existentes.Packages also include a PackageRelationship feature that allows additional information to be added to a package or associated with specific parts without actually modifying the content of existing parts. Los servicios de paquetes también admiten Microsoft Windows Rights Management (RM).Package services also support Microsoft Windows Rights Management (RM).

La arquitectura de paquetes de WPFWPF sirve como base para varias tecnologías clave:The WPFWPF Package architecture serves as the foundation for a number of key technologies:

  • Documentos XPS conformes a la especificación de papel XML (XPS).XPS documents conforming to the XML Paper Specification (XPS).

  • Documentos XML de formato abierto (.docx) de Microsoft Office "12".Microsoft Office "12" open XML format documents (.docx).

  • Formatos de almacenamiento personalizados para su propio diseño de aplicaciones.Custom storage formats for your own application design.

Basado en las API XpsDocument de empaquetado, un WPFWPF está diseñado específicamente para almacenar documentos de contenido fijo.Based on the packaging APIs, an XpsDocument is specifically designed for storing WPFWPF fixed content documents. Un XpsDocument documento es independiente que se puede abrir en un DocumentViewer visor, mostrarse en un control, enrutarse a una cola de impresión o enviarse directamente a una impresora compatible con XPS.An XpsDocument is a self-contained document that can be opened in a viewer, displayed in a DocumentViewer control, routed to a print spool, or output directly to an XPS-compatible printer.

En las secciones siguientes Package XpsDocument se proporciona WPFWPFinformación adicional sobre las API proporcionadas con .The following sections provide additional information on the Package and XpsDocument APIs provided with WPFWPF.

Componentes de paquetesPackage Components

Las API de empaquetado de WPFWPF permiten organizar los datos de aplicación y documentos en una sola unidad portátil.The WPFWPF packaging APIs allow application data and documents to be organized into a single portable unit. Un archivo ZIP es uno de los tipos más comunes de paquetes y es el tipo de paquete predeterminado que se proporciona con WPFWPF.A ZIP file is one of the most common types of packages and is the default package type provided with WPFWPF. Packagesí mismo es una ZipPackage clase abstracta desde la que se implementa utilizando una arquitectura de archivos XML y ZIP estándar abierta.Package itself is an abstract class from which ZipPackage is implemented using an open standard XML and ZIP file architecture. El Open método ZipPackage se utiliza para crear y utilizar archivos ZIP de forma predeterminada.The Open method uses ZipPackage to create and use ZIP files by default. Un paquete puede contener tres tipos básicos de elementos:A package can contain three basic types of items:

PackagePart Archivos de contenido, datos, documentos y recursos de la aplicación.Application content, data, documents, and resource files.
PackageDigitalSignature [Certificado X.509] para la identificación, autenticación y validación.[X.509 Certificate] for identification, authentication and validation.
PackageRelationship Información agregada relacionada con el paquete o un elemento concreto.Added information related to the package or a specific part.

PackagePartsPackageParts

Un PackagePart ("parte") es una clase abstracta que Packagehace referencia a un objeto almacenado en un archivo .A PackagePart ("part") is an abstract class that refers to an object stored in a Package. En un archivo ZIP, los elementos del paquete corresponden a los archivos individuales almacenados en el archivo ZIP.In a ZIP file, the package parts correspond to the individual files stored within the ZIP file. ZipPackagePartproporciona la implementación predeterminada para ZipPackagelos objetos serializables almacenados en un archivo .ZipPackagePart provides the default implementation for serializable objects stored in a ZipPackage. Al igual que un sistema de archivos, los elementos incluidos en el paquete se almacenan en directorios jerárquicos o en una organización de "estilo de carpetas".Like a file system, parts contained in the package are stored in hierarchical directory or "folder-style" organization. Con WPFWPF las API de empaquetado, las aplicaciones PackagePart pueden escribir, almacenar y leer varios objetos mediante un único contenedor de archivos ZIP.Using the WPFWPF packaging APIs, applications can write, store, and read multiple PackagePart objects using a single ZIP file container.

PackageDigitalSignaturesPackageDigitalSignatures

Por seguridad, PackageDigitalSignature se puede asociar una ("firma digital") con piezas dentro de un paquete.For security, a PackageDigitalSignature ("digital signature") can be associated with parts within a package. A PackageDigitalSignature incorpora un [509] que proporciona dos características:A PackageDigitalSignature incorporates a [509] that provides two features:

  1. Identifica y autentica al originador del elemento.Identifies and authenticates the originator of the part.

  2. Valida que no se haya modificado el elemento.Validates that the part has not been modified.

La firma digital no impide que se modifique un elemento, pero no se podrá realizar la comprobación de validación de la firma digital si el elemento se ha modificado de alguna manera.The digital signature does not preclude a part from being modified, but a validation check against the digital signature will fail if the part is altered in any way. La aplicación, a continuación, puede emprender la acciones apropiadas: por ejemplo, bloquear la apertura del elemento o notificar al usuario que se ha modificado el elemento y que los datos no son seguros.The application can then take appropriate action—for example, block opening the part or notify the user that the part has been modified and is not secure.

PackageRelationshipsPackageRelationships

Un PackageRelationship ("relación") proporciona un mecanismo para asociar información adicional con el paquete o una parte dentro del paquete.A PackageRelationship ("relationship") provides a mechanism for associating additional information with the package or a part within the package. Una relación es una función de nivel del paquete que puede asociar información adicional a un elemento sin modificar el contenido real del elemento.A relationship is a package-level facility that can associate additional information with a part without modifying the actual part content. Insertar directamente nuevos datos en el contenido del elemento no suele ser práctico en muchos casos:Inserting new data directly into the part content of is usually not practical in many cases:

  • No se conocen el tipo real del elemento ni su esquema de contenido.The actual type of the part and its content schema is not known.

  • Incluso si se conocen, el esquema de contenido podría no proporcionar un medio para agregar nueva información.Even if known, the content schema might not provide a means for adding new information.

  • El elemento puede estar firmado digitalmente o cifrado, impidiendo cualquier modificación.The part might be digitally signed or encrypted, precluding any modification.

Las relaciones de los paquetes proporcionan un medio reconocible para agregar y asociar información adicional a los elementos individuales o al paquete completo.Package relationships provide a discoverable means for adding and associating additional information with individual parts or with the entire package. Las relaciones de los paquetes se utilizan para dos funciones principales:Package relationships are used for two primary functions:

  1. Definir las relaciones de dependencia de un elemento con otro elemento.Defining dependency relationships from one part to another part.

  2. Definir las relaciones de información que agregan notas u otros datos relacionados con el elemento.Defining information relationships that add notes or other data related to the part.

A PackageRelationship proporciona un medio rápido y detectable para definir dependencias y agregar otra información asociada con una parte del paquete o el paquete en su conjunto.A PackageRelationship provides a quick, discoverable means to define dependencies and add other information associated with a part of the package or the package as a whole.

Relaciones de dependenciaDependency Relationships

Las relaciones de dependencia se utilizan para describir las dependencias que mantiene un elemento con otros elementos.Dependency relationships are used to describe dependencies that one part makes to other parts. Por ejemplo, un paquete puede contener un elemento HTML que incluya una o más etiquetas de imagen <img>.For example, a package might contain an HTML part that includes one or more <img> image tags. Las etiquetas de imagen hacen referencia a imágenes que se encuentran en otros elementos internos del paquete o externos al paquete (por ejemplo, a los que se pueda acceder a través de Internet).The image tags refer to images that are located either as other parts internal to the package or external to the package (such as accessible over the Internet). La PackageRelationship creación de un archivo HTML asociado hace que descubrir y acceder a los recursos dependientes sea rápido y fácil.Creating a PackageRelationship associated with HTML file makes discovering and accessing the dependent resources quick and easy. Una aplicación de explorador o de visor puede tener acceso directamente a las relaciones entre los elementos y comenzar a ensamblar de inmediato los recursos dependientes sin conocer el esquema ni analizar el documento.A browser or viewer application can directly access the part relationships and immediately begin assembling the dependent resources without knowing the schema or parsing the document.

Relaciones de informaciónInformation Relationships

De forma similar a PackageRelationship una nota o anotación, también se puede utilizar a para almacenar otros tipos de información que se asociarán a una pieza sin tener que modificar realmente el propio contenido de la pieza.Similar to a note or annotation, a PackageRelationship can also be used to store other types of information to be associated with a part without having to actually modify the part content itself.

Documentos XPSXPS Documents

Xml Paper Specification (XPS) document es un paquete que contiene uno o más documentos fijos junto con todos los recursos e información necesarios para la representación.XML Paper Specification (XPS) document is a package that contains one or more fixed-documents along with all the resources and information required for rendering. XPS es también el formato de archivo de cola de impresión nativo de Windows Vista.XPS is also the native Windows Vista print spool file format. An XpsDocument se almacena en el conjunto de datos ZIP estándar y puede incluir una combinación de componentes XML y binarios, como archivos de imagen y fuente.An XpsDocument is stored in standard ZIP dataset, and can include a combination of XML and binary components, such as image and font files. Se utilizan PackageRelationships para definir las dependencias entre el contenido y los recursos necesarios para representar totalmente el documento.PackageRelationships are used to define the dependencies between the content and the resources required to fully render the document. El XpsDocument diseño proporciona una solución de documento única y de alta fidelidad que admite múltiples usos:The XpsDocument design provides a single, high-fidelity document solution that supports multiple uses:

  • Lectura, escritura y almacenamiento de contenido y recursos de documentos fijos como un archivo único portátil y fácil de distribuir.Reading, writing, and storing fixed-document content and resources as a single, portable, and easy-to-distribute file.

  • Visualización de documentos con la aplicación XPS Viewer.Displaying documents with the XPS Viewer application.

  • Salida de documentos en el formato de salida de cola de impresión nativa de Windows Vista.Outputting documents in the native print spool output format of Windows Vista.

  • Enrutamiento de documentos directamente a una impresora compatible con XPS.Routing documents directly to an XPS-compatible printer.

Consulte tambiénSee also