Partilhar via


Documentos WPF

O Windows Presentation Foundation (WPF) oferece uma ampla gama de recursos de documentos que permitem a criação de conteúdo de alta fidelidade projetado para ser mais facilmente acessado e lido do que nas gerações anteriores do Windows. Além de recursos e qualidade aprimorados, o WPF também fornece serviços integrados para exibição de documentos, empacotamento e segurança. Este tópico fornece uma introdução aos tipos de documentos WPF e empacotamento de documentos.

Tipos de documentos

O WPF divide os documentos em duas grandes categorias com base no uso pretendido; Essas categorias de documentos são denominadas "documentos fixos" e "documentos de fluxo".

Os documentos fixos destinam-se a aplicações que requerem uma apresentação precisa "what you see is what you get" (WYSIWYG), independentemente do hardware de visualização ou impressora utilizado. Os usos típicos para documentos fixos incluem editoração eletrônica, processamento de texto e layout de formulário, onde a aderência ao design da página original é fundamental. Como parte de seu layout, um documento fixo mantém o posicionamento preciso dos elementos de conteúdo, independentemente do dispositivo de exibição ou impressão em uso. Por exemplo, uma página de documento fixa visualizada no visor de 96 dpi aparecerá exatamente da mesma forma quando é saída para uma impressora laser de 600 dpi como quando é saída para um fototipógrafo de 4800 dpi. O layout da página permanece o mesmo em todos os casos, enquanto a qualidade do documento maximiza as capacidades de cada dispositivo.

Em comparação, os documentos de fluxo são projetados para otimizar a visualização e a legibilidade e são melhor utilizados quando a facilidade de leitura é o principal cenário de consumo de documentos. Em vez de serem definidos para um layout predefinido, os documentos de fluxo ajustam e refluem dinamicamente seu conteúdo com base em variáveis de tempo de execução, como tamanho da janela, resolução do dispositivo e preferências opcionais do usuário. Uma página da Web é um exemplo simples de um documento de fluxo em que o conteúdo da página é formatado dinamicamente para se ajustar à janela atual. Os documentos de fluxo otimizam a experiência de visualização e leitura para o usuário, com base no ambiente de tempo de execução. Por exemplo, o mesmo documento de fluxo será reformatado dinamicamente para uma legibilidade ideal no ecrã de 19 polegadas de alta resolução ou num pequeno ecrã PDA de 2x3 polegadas. Além disso, os documentos de fluxo têm uma série de recursos integrados, incluindo pesquisa, modos de visualização que otimizam a legibilidade e a capacidade de alterar o tamanho e a aparência das fontes. Consulte Visão geral do documento de fluxo para obter ilustrações, exemplos e informações detalhadas sobre documentos de fluxo.

Controles de documento e layout de texto

O .NET Framework fornece um conjunto de controles pré-criados que simplificam o uso de documentos fixos, documentos de fluxo e texto geral em seu aplicativo. A exibição de conteúdo de documento fixo é suportada usando o DocumentViewer controle. A exibição do conteúdo do documento de fluxo é suportada por três controles diferentes: FlowDocumentReader, FlowDocumentPageViewere FlowDocumentScrollViewer que são mapeados para diferentes cenários de usuário (consulte as seções abaixo). Outros controles WPF fornecem layout simplificado para suportar usos gerais de texto (consulte Texto na interface do usuário, abaixo).

Controle de documento fixo - DocumentViewer

O DocumentViewer controle é projetado para exibir FixedDocument conteúdo. O DocumentViewer controle oferece uma interface de utilizador intuitiva que inclui suporte embutido para operações comuns, como impressão, cópia para a área de transferência, zoom e recursos de pesquisa de texto. O controle fornece acesso a páginas de conteúdo através de um mecanismo de rolagem familiar. Como todos os controles WPF, DocumentViewer suporta reestilização completa ou parcial, o que permite que o controle seja visualmente integrado em praticamente qualquer aplicativo ou ambiente.

DocumentViewer foi concebido para apresentar conteúdos de forma só de leitura; A edição ou modificação de conteúdo não está disponível e não é suportada.

Controlos de Documentos de Fluxo

Observação

Para obter informações mais detalhadas sobre os recursos do documento de fluxo e como criá-los, consulte Visão geral do documento de fluxo.

A exibição do conteúdo do documento de fluxo é suportada por três controles: FlowDocumentReader, FlowDocumentPageViewere FlowDocumentScrollViewer.

FlowDocumentReader

FlowDocumentReader Inclui recursos que permitem ao usuário escolher dinamicamente entre vários modos de visualização, incluindo um modo de visualização de página única (página de cada vez), um modo de visualização de duas páginas por vez (formato de leitura de livros) e um modo de visualização de rolagem contínua (sem fundo). Para obter mais informações sobre esses modos de exibição, consulte FlowDocumentReaderViewingMode. Caso não necessite da capacidade de alternar dinamicamente entre diferentes modos de visualização, FlowDocumentPageViewer e FlowDocumentScrollViewer fornecem visualizadores de conteúdo de fluxo mais leves que estão fixados num modo de visualização específico.

FlowDocumentPageViewer e FlowDocumentScrollViewer

FlowDocumentPageViewer mostra o conteúdo no modo de visualização de página por vez, enquanto FlowDocumentScrollViewer mostra o conteúdo no modo de rolagem contínua. Ambos FlowDocumentPageViewer e FlowDocumentScrollViewer são fixados a um modo de visualização específico. Compare com FlowDocumentReader, que inclui recursos que permitem ao usuário escolher dinamicamente entre vários modos de visualização (conforme fornecido pela FlowDocumentReaderViewingMode enumeração), ao custo de ser mais intensivo em recursos do que FlowDocumentPageViewer ou FlowDocumentScrollViewer.

Por padrão, uma barra de rolagem vertical é sempre mostrada e uma barra de rolagem horizontal torna-se visível, se necessário. A interface do usuário padrão para FlowDocumentScrollViewer não inclui uma barra de ferramentas, no entanto, a IsToolBarVisible propriedade pode ser usada para habilitar uma barra de ferramentas interna.

Texto na interface do usuário

Além de adicionar texto a documentos, o texto pode, obviamente, ser usado na interface do usuário do aplicativo, como formulários. WPF inclui vários controles para desenhar texto para a tela. Cada controle é direcionado para um cenário diferente e tem sua própria lista de recursos e limitações. Em geral, o elemento TextBlock deve ser usado quando o suporte de texto limitado é necessário, como uma breve frase em uma interface do usuário (UI). Label pode ser usado quando o suporte mínimo de texto é necessário. Para obter mais informações, consulte Visão geral do TextBlock.

Embalagem de documentos

As System.IO.Packaging APIs fornecem um meio eficiente de organizar dados de aplicativos, conteúdo de documentos e recursos relacionados em um único contêiner que é simples de acessar, portátil e fácil de distribuir. Um arquivo ZIP é um exemplo de um Package tipo capaz de armazenar vários objetos como uma única unidade. As APIs de empacotamento fornecem uma implementação padrão ZipPackage projetada usando um padrão Open Packaging Conventions com arquitetura de arquivo XML e ZIP. As APIs de empacotamento do WPF simplificam a criação de pacotes e o armazenamento e acesso a objetos dentro deles. Um objeto armazenado em um Package é referido como uma PackagePart ("parte"). Os pacotes também podem incluir certificados digitais assinados que podem ser usados para identificar o originador de uma peça e para validar que o conteúdo de um pacote não foi modificado. Os pacotes também incluem um PackageRelationship recurso que permite que informações adicionais sejam adicionadas a um pacote ou associadas a partes específicas sem realmente modificar o conteúdo das partes existentes. Os serviços de pacote também suportam o Microsoft Windows Rights Management (RM).

A arquitetura do pacote WPF serve como base para várias tecnologias-chave:

  • Documentos XPS em conformidade com a especificação de papel XML (XPS).

  • Documentos em formato Open XML do Microsoft Office "12" (.docx).

  • Formatos de armazenamento personalizados para o seu próprio design de aplicação.

Com base nas APIs de empacotamento, um XpsDocument é projetado especificamente para armazenar documentos de conteúdo fixo do WPF. Um XpsDocument é um documento autônomo que pode ser aberto em um visualizador, exibido em um DocumentViewer controle, roteado para um spool de impressão ou enviado diretamente para uma impressora compatível com XPS.

As seções a seguir fornecem informações adicionais sobre as Package e XpsDocument APIs fornecidas com o WPF.

Componentes do pacote

As APIs de empacotamento do WPF permitem que os dados e documentos do aplicativo 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 o WPF. Package é uma classe abstrata a partir da qual ZipPackage é implementada usando uma arquitetura de arquivo XML e ZIP padrão aberto. O Open método usa ZipPackage para criar e usar arquivos ZIP por padrão. Um pacote pode conter três tipos básicos de itens:

Iteme Descrição
PackagePart Conteúdo do aplicativo, dados, documentos e arquivos de recursos.
PackageDigitalSignature [Certificado X.509] para identificação, autenticação e validação.
PackageRelationship Adicionadas informações relacionadas ao pacote ou a uma peça específica.

Partes do Pacote

A PackagePart ("parte") é uma classe abstrata que se refere a um objeto armazenado em um Packagearquivo . 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 ZipPackagearquivo . Como um sistema de arquivos, as partes contidas no pacote são armazenadas em diretório hierárquico ou organização "estilo pasta". Usando as APIs de empacotamento do WPF, os aplicativos podem escrever, armazenar e ler vários PackagePart objetos usando um único contêiner de arquivo ZIP.

PacoteAssinaturas Digitais

Por segurança, uma PackageDigitalSignature ("assinatura digital") pode ser associada a partes dentro de um pacote. A PackageDigitalSignature incorpora um [509] que fornece duas características:

  1. Identifica e autentica o originador da peça.

  2. Valida que a peça não foi modificada.

A assinatura digital não impede que uma parte seja modificada, mas uma verificação de validação em relação à assinatura digital falhará se a parte for alterada de alguma forma. O aplicativo pode então tomar as medidas apropriadas — por exemplo, bloquear a abertura da peça ou notificar o usuário de que a peça foi modificada e não é segura.

Relações de Pacotes

A PackageRelationship ("relação") fornece um mecanismo para associar informações adicionais ao pacote ou a uma parte do pacote. Um relacionamento é um recurso no nível do pacote que pode associar informações adicionais a uma peça sem modificar o conteúdo real da peça. Inserir novos dados diretamente no conteúdo da parte geralmente não é prático em muitos casos:

  • O tipo real da peça e seu esquema de conteúdo não são conhecidos.

  • Mesmo se conhecido, o esquema de conteúdo pode não fornecer um meio para adicionar novas informações.

  • A peça pode ser assinada digitalmente ou criptografada, impedindo qualquer modificação.

As relações de pacote fornecem um meio detetável para adicionar e associar informações adicionais a partes individuais ou ao pacote inteiro. As relações de pacote são usadas para duas funções principais:

  1. Definição de relações de dependência de uma parte para outra.

  2. Definição de relações de informação que adicionam notas ou outros dados relacionados com a peça.

A PackageRelationship fornece um meio rápido e detetável para definir dependências e adicionar outras informações associadas a uma parte do pacote ou ao pacote como um todo.

Relações de dependência

As relações de dependência são usadas para descrever dependências que uma parte faz com outras partes. Por exemplo, um pacote pode conter uma parte HTML que inclui uma ou mais <tags de imagem img> . As tags de imagem referem-se a imagens que estão localizadas como outras partes internas ao pacote ou externas ao pacote (como acessíveis pela Internet). Criar um PackageRelationship arquivo HTML associado torna a descoberta e o acesso aos recursos dependentes rápidos e fáceis. Um navegador ou aplicativo visualizador pode acessar diretamente as relações de peça e começar imediatamente a montar os recursos dependentes sem conhecer o esquema ou analisar o documento.

Relações de Informação

Semelhante a uma nota ou anotação, um PackageRelationship também pode ser usado para armazenar outros tipos de informações a serem associadas a uma parte sem ter que realmente modificar o conteúdo da peça em si.

Documentos XPS

O documento XPS (XML Paper Specification) é um pacote que contém um ou mais documentos fixos, juntamente com todos os recursos e informações necessários para renderização. XPS também é o formato de ficheiro de spool de impressão nativo do Windows Vista. Um XpsDocument é armazenado no conjunto de dados ZIP padrão e pode incluir uma combinação de componentes XML e binários, como arquivos de imagem e fonte. PackageRelationships são usados para definir as dependências entre o conteúdo e os recursos necessários para renderizar totalmente o documento. O XpsDocument design fornece uma solução única de documentos de alta fidelidade que suporta vários usos:

  • Leitura, gravação e armazenamento de conteúdo e recursos de documentos fixos como um arquivo único, portátil e fácil de distribuir.

  • Exibição de documentos com o aplicativo XPS Viewer.

  • Saída de documentos no formato de saída de spool de impressão nativo do Windows Vista.

  • Roteamento de documentos diretamente para uma impressora compatível com XPS.

Ver também