Documentos em Windows Presentation Foundation
Windows Presentation Foundation (WPF) oferece uma ampla gama de características de documento que permitem a criação de conteúdo de alta fidelidade que é projetado para ser mais facilmente acessado e lido do que em gerações anteriores de Windows. Além de capacidades avançadas e qualidade, WPF também oferece serviços integrados para a exibição, empacotamente e segurança de documentos. Esse tópico oferece uma introdução aos tipos e empacotamento de documento WPF
Este tópico contém as seguintes seções.
- Tipos de Documentos
- Controles de Documento e Layout de Texto
- Empacotamento de Documento
- Documentos XPS
- Tópicos relacionados
Tipos de Documentos
WPF divide documentos em duas categorias com base em seu uso pretendido; essas categorias de documentos são chamadas de "documentos fixos" e "documentos de fluxo".
Documentos fixos são pretendidos para aplicações que requerem uma apresentação "what you see is what you get" (WYSIWYG) precisa, independente do hardware de exibição ou impressão utilizado. Usos típicos para documentos fixos incluem editoração eletrônica, edição de texto e layout de formulários, onde a aderência ao design original da página é essencial. Como parte do seu layout, um documento fixo mantém o posicionamento preciso de elementos de conteúdo independente do dispositivo de exibição ou impressão em uso. Por exemplo, uma página de documento fixo visualizada num monitor de 96 dpi vai aparecer exatamente do mesmo jeito quando exibida numa impressora laser de 600 dpi e numa impressora gráfica de fotos de 4800 dpi. O layout da página permanece o mesmo em todos os casos, embora a qualidade do documento maximize as capacidades de cada dispositivo.
Por comparação, documentos de fluxo são projetados para otimizar a exibição e legibilidade e são utilizados melhor quando a facilidade de leitura é o principal cenário de consumo do documento. Em vez de ser definido para um layout predefinido, documentos de fluxo ajustam dinamicamente seu conteúdo com base em variáveis de tempo de execução como tamanho de janela, resolução do dispositivo, e preferências do usuário opcionais. Uma página Web é um exemplo simples de um documento de fluxo onde o conteúdo da página é formatado dinamicamente para caber na janela atual. Documentos de fluxo otimizam a experiência de visualização e leitura do usuário, com base no ambiente de tempo de execução. Por exemplo, o mesmo documento de fluxo se formata dinamicamente para legibilidade otimizada em um monitor de alta resolução de 19 polegadas e em uma tela de PDA pequena de 2x3 polegadas. Além disso, documentos de fluxo têm diversas características embutidas, incluindo busca, modos de visualização que otimizam a legibilidade, e a capacidade de mudar o tamanho e a aparência de fontes. Consulte Flow Document Overview para ilustrações, exemplos e informações aprofundadas sobre documentos de fluxo.
Controles de Documento e Layout de Texto
O .NET Framework oferece um conjunto de controles pré-compilados que simplificam o uso de documentos fixos, documentos de fluxo e texto geral em sua aplicação. A exibição do conteúdo de documento fixo é suportada utilizando o controle DocumentViewer. Exibição do conteúdo do documento de fluxo é suportada por três controles diferentes: FlowDocumentReader, FlowDocumentPageViewer, e FlowDocumentScrollViewer qual MAP de cenários de usuário diferente (consulte as seções abaixo). Outros controles WPF oferecem layout simplificado para suportar usos de texto gerais (consulte Texto na Interface de Usuário, abaixo).
Controle de Documento Fixo - DocumentViewer
O controle DocumentViewer é projetado para exibir conteúdo FixedDocument. O controle DocumentViewer oferece uma interface de usuário intuitiva que oferece suporte embutido para operações comuns incluindo características de saída de impressão, cópia para a área de transferência, zoom e busca de texto. O controle oferece acesso a páginas de conteúdo através de um mecanismo de rolamento familiar. Como todos controles WPF, DocumentViewer suporta estilização completa ou parcial, que permite que o controle seja visualmente integrado em virtualmente qualquer aplicação ou ambiente.
DocumentViewer é projetado para exibir conteúdo de forma somente leitura; edição ou modificação de conteúdo não está disponível e não é suportada.
Controles de Documento de Fluxo
Observação: Para obter informações mais detalhadas sobre recursos de fluxo de documentos e como criá-los, consulte Flow Document Overview.
Exibição do conteúdo do documento de fluxo é suportada por três controles: FlowDocumentReader, FlowDocumentPageViewer, e FlowDocumentScrollViewer.
FlowDocumentReader
FlowDocumentReader inclui características que permitem ao usuário escolher dinamicamente entre diversos modos de visualização, utilizando modo de visualização de página única (uma página por vez), um modo de visualização de duas páginas por vez (formato de leitura de livro) e um modo de visualização de rolamento contínuo (sem fundo). Para obter mais informações sobre esses modos de visualização, consulte FlowDocumentReaderViewingMode. Se você não precisa da capacidade de trocar dinamicamente de modo de visualização, FlowDocumentPageViewer e FlowDocumentScrollViewer oferecem visualizadores de conteúdo de fluxo leves que são fixados num modo de visualização particular.
FlowDocumentPageViewer e FlowDocumentScrollViewer
FlowDocumentPageViewer exibe conteúdo em modo de visualização de uma página por vez, enquanto FlowDocumentScrollViewer mostra o conteúdo em modo de rolamento contínuo. Ambos FlowDocumentPageViewer e FlowDocumentScrollViewer são fixos em um modo de visualização particular. Compare com FlowDocumentReader, que inclui características que permitem ao usuário escolher dinamicamente entre diversos modos de visualização (tal como oferecido pelo enumeração (FlowDocumentReaderViewingMode), sob pena de ser consumir recursos mais intensivamente do que FlowDocumentPageViewer ou FlowDocumentScrollViewer.
Por default, uma barra de rolamento vertical sempre é exibida, e uma barra de rolamento horizontal se torna visivel caso necessário. O UI default para FlowDocumentScrollViewer não inclui uma barra de ferramenta; entretanto, a propriedade IsToolBarVisible pode ser utilizada para habilitar uma barra de ferramenta embutida.
Texto na interface de usuário.
Além de adicionar texto aos documentos, texto, obviamente, pode ser usado da interface do usuário do aplicativo, sistema autônomo formulários. WPF inclui vários controles para desenhar texto na tela. Cada controle é almejado a um cenário diferente e tem sua própria lista de características e limitações. Em geral, a TextBlock elemento deve ser usado quando o suporte limitado de texto é necessário, por exemplo, uma breve frase em um interface do usuário (UI). Label pode ser usado quando a quantidade mínima de texto de suporte é necessária. Para obter mais informações, consulte Visão geral do TextBlock.
Empacotamento de Documento
O System.IO.Packaging APIs oferece uma forma eficiente de organizar dados da aplicação, conteúdo de documento e recursos relacionados em um único contêiner que é simples de acessar, portável e fácil de distribuir. Um arquivo ZIP é um exemplo de um tipo Package capaz de conter múltiplos objetos como uma unidade. O empacotamenteo APIs oferece uma implementação ZipPackage default projetada utilizando um padrão de Open Packaging Conventions com arquitetura de arquivos XML e ZIP. O empacotamento WPF APIs torna fácil criar pacotes e armazenar e acessar objetos dentro deles. Um objeto armazenado em um Package é referenciado como um PackagePart ("parte"). Pacotes também podem incluir certificados digitais assinados que podem ser utilizados para identificar a origem de uma parte e validar que o conteúdo de um pacote não foi modificado. Pacotes também incluem uma característica PackageRelationship que permite que informação adicional seja acrescentada a um pacote ou associada a partes específicas sem modificar de fato o conteúdo de partes existentes. Serviços de pacotes também suportam Microsoft Windows Rights Management (RM).
A arquitetura de pacote WPF serve como fundamento para diversas tecnologias-chave:
Documentos XPS em conformidade com XML Paper Specification (XPS).
Documentos de formato open XML do Microsoft Office "12" (.docx).
Formatos de armazenamento personalizado para seu próprio design de aplicação.
Com base nas APIs de empacotamento, um XpsDocument é projetado especificamente para armazenar documentos de conteúdo fixo WPF. Um XpsDocument é um documento autocontido que pode ser aberto em um visualizador, exibido em um controle DocumentViewer, roteado para uma fila de impressão ou impresso diretamente em uma impressora compatível com XPS.
As seções a seguir oferecem informações adicionais sobre o Package e XpsDocument APIs fornecidos com WPF.
Componentes de Empacotamento
As APIs de empacotamento WPF permitem que dados e documentos de aplicação sejam organizados em uma única unidade portátil. Um arquivo ZIP é um dos tipos mais comuns de pacotes e é o tipo de pacote padrão fornecido com WPF. Package Se é uma classe abstrata da qual ZipPackage é implementado usando um padrão XML e ZIP arquivo arquitetura aberta. O método Open utiliza ZipPackage para criar e utilizar arquivos ZIP por default. Um pacote pode conter três tipos básicos de itens:
Conteúdo, dados, documentos e arquivos de recurso de aplicação. |
|
X.509 Certificate para identificação, autenticação e validação. |
|
Informações acrescentadas relacionadas ao pacote ou a uma parte específica. |
PackageParts
Um PackagePart ("parte") é uma classe abstrata que se refere a um objeto armazenado em um Package. Em um arquivo ZIP, as partes do pacote correspondem aos arquivos individuais armazenados no arquivo ZIP. ZipPackagePart Fornece a implementação padrão para objetos serializáveis, armazenados em um ZipPackage. Como um sistema de arquivos, partes contidas no pacote são armazenadas em organizaçãod e diretórios hierárquicos ou no estilo de pastas. Utilizando as APIs de empacotamento WPF podem escrever, armazenar e ler múltiplos objetos PackagePart utilizando um único contêiner de arquivo ZIP.
PackageDigitalSignatures
Por segurança, uma PackageDigitalSignature ("assinatura digital") pode ser associada a partes em um pacote. Um PackageDigitalSignature incorpora um 509 que fornece duas características:
Identifica e autentica a origem da parte.
Valida que a parte não foi modificada.
A assinatura digital não evita que uma parte seja modificada, mas uma verificação de validação com relação à assinatura falhará se a parte for alterada de qualquer maneira. A aplicação pode então tomar ação adequada -- por exemplo, bloquear a abertura da parte ou notificar o usuário que a parte foi modificada e não é segura.
PackageRelationships
Um PackageRelationship ("relacionamento") fornece um mecanismo para associar informações adicionais com o pacote ou parte dentro do pacote. Um relacionamento é uma facilidade a nível de pacote que pode associar informações adicionais a uma parte sem modificar o conteúdo da parte. Inserir novos dados diretamente no conteúdo de uma parte geralmente não é prático em diversos casos:
O tipo real da parte e seu esquema de conteúdo não é conhecido.
Mesmo se conhecido, o esquema de conteúdo pode não fornecer um meio de acrescentar novas informações.
Essa parte pode ser digitalmente assinada ou encriptada, evitando qualquer modificação.
Relacionamentos de pacote fornecem uma forma de acrescentar e associar informações adicionais a partes individuais ou com o pacote inteiro. Relacionamentos de pacote são utilizados para duas funções principais:
Definir relações de dependência de uma parte para outra parte.
Definir relacionamentos de informação que acrescentam anotaçoes ou outros dados relacionados à parte.
Um PackageRelationship fornece um meio rápido de definir dependências e outras informações associadas a uma parte do pacote ou ao pacote como um todo.
Relacionamentos de Dependência
Relacionamentos de dependência são utilizados para descrever dependências que uma parte tem a outras partes. Por exemplo, um pacote pode conter uma parte HTML que inclui uma ou mais marcações de imagem <img>. As marcações de imagem se referem a imagens localizadas como outras partes internas ao pacote ou externas ao pacote (tais como acessíveis pela Internet). Criar um PackageRelationship associado com um arquivo HTML torna a descoberta e o acesso a recursos dependentes rápido e fácil. Um navegador ou aplicação de visualização pode acessar diretamente os relacionamentos de partes e imediatamente começar a juntar os recursos dependentes sem conhecer o esquema ou processar o documento.
Relacionamentos de Informação
De forma semelhante a uma anotação, um PackageRelationship também pode ser utilizado para armazenar outros tipos de informação a serem associados com uma parte sem ter que realmente modificar o próprio conteúdo da parte.
Documentos XPS
XML Paper Specification (XPS) documento é um pacote que contém um ou mais fixo-documentos juntamente com todos os recursos e informações necessárias para renderização. XPS também é o nativo Windows Vista formato de arquivo de spool de impressão. An XpsDocument é armazenado no dataset ZIP padrão e pode incluir uma combinação de XML e componentes binário, sistema autônomo arquivos de imagem e a fonte. PackageRelationships são usados para definir sistema autônomo dependências entre o conteúdo e sistema autônomo recursos necessários para processar totalmente o documento. O design de XpsDocument fornece uma solução única de documento de alta-fidelidade que suporta múltiplos usos:
Ler, escrever e armazenar conteúdo de documento fixo e recursos como um único arquivo portátil e fácil de distribuir.
Exibir documentos com uma aplicação visualizadora XPS.
Gerar documentos no formato de saída de spool de impressão nativo do Windows Vista.
Encaminhar documentos diretamente para uma impressora compatível com XPS.
Consulte também
Tarefas
Exemplo de propriedades de TextBlock
Exemplo de propriedades de FlowDocument
Conceitos
Otimizando o desempenho: Texto
Serialização e Armazenamento de Documento