Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Documentos no WPF

 

Publicado: junho de 2016

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

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 destinados para aplicativos que exigem um precisos WYSIWYG ("what you see is what you get") apresentação, independente do hardware de vídeo ou impressora usada. Usos típicos para documentos fixos incluem editoração eletrônica, processamento de texto e layout do formulário, 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 impressão em uso ou exibição. Por exemplo, uma página de documento fixo exibida na tela de 96 dpi aparecerá exatamente o mesmo quando ele sai para uma impressora a laser 600 dpi como quando ele é enviado para um phototypesetter 4800 PPP. O layout da página permanece a mesma em todos os casos, embora a qualidade do documento maximize as capacidades de cada dispositivo.

Em comparação, documentos de fluxo são projetados para otimizar a visualização e a leitura e são melhor utilizados quando a facilidade de leitura é o primário cenário de consumo do documento . Em vez de ser definido para um layout predefinido, documentos de fluxo dinamicamente ajustar e seu conteúdo com base em variáveis de tempo de execução como tamanho da janela, resolução do dispositivo e as preferências do usuário opcionais. Uma página da 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 visualização e experiência de leitura para o usuário, com base no ambiente de tempo de execução. Por exemplo, o mesmo documento de fluxo reformatará dinamicamente para legibilidade otimizada em alta resolução de 19 polegadas ou uma tela de PDA pequena 2x3 polegadas. Além disso, documentos de fluxo tem um número de recursos incluindo busca, modos de visualização que otimizam a legibilidade e a capacidade de alterar o tamanho e a aparência das fontes embutidos. Consulte Visão geral do documento de fluxo para ilustrações, exemplos e informações aprofundadas sobre documentos de fluxo.

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 utilizando o DocumentViewer controle. Exibição de conteúdo de documento de fluxo é suportada por três controles diferentes: FlowDocumentReader, FlowDocumentPageViewer, e FlowDocumentScrollViewer que mapeiam para diferentes cenários de uso (veja seções abaixo). Outros WPF controles fornecem usa layout simplificado para oferecer suporte a texto geral (consulte texto na Interface do usuário, abaixo).

O DocumentViewer controle é projetado para exibir FixedDocument conteúdo. O DocumentViewer controle fornece uma interface de usuário intuitiva que oferece suporte embutido para operações comuns, incluindo a saída de impressa, copie para a área de transferência, zoom e recursos de pesquisa de texto. O controle fornece acesso a páginas de conteúdo por meio de um mecanismo de rolagem familiar. Como todos os WPF controles, DocumentViewer suporta estilização completa ou parcial, que permite que o controle seja visualmente integrado em virtualmente qualquer aplicativo ou o 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.

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

Exibição de conteúdo de documento de fluxo é suportada por três controles: FlowDocumentReader, FlowDocumentPageViewer, e FlowDocumentScrollViewer.

FlowDocumentReader inclui recursos que permitem ao usuário escolher dinamicamente entre diversos modos de exibição, um modo de página única (uma página por vez) exibindo um dois-página--uma por vez (formato de leitura de livro) exibindo modo e um modo de exibição (sem parte inferior) de rolamento contínuo. Para obter mais informações sobre esses modos de visualização, consulte FlowDocumentReaderViewingMode. Se você não precisa da capacidade dinamicamente alternar entre modos de exibição diferentes, FlowDocumentPageViewer e FlowDocumentScrollViewer oferecem fluxo leves visualizadores de conteúdo que são fixos em um modo de visualização particular.

FlowDocumentPageViewer mostra o conteúdo de página por vez modo de exibição, enquanto FlowDocumentScrollViewer mostra o conteúdo no modo de rolagem contínuo. Ambos FlowDocumentPageViewer e FlowDocumentScrollViewer são fixos em um modo de visualização particular. Compare com FlowDocumentReader, que inclui recursos que permitem ao usuário escolher dinamicamente entre diversos modos de visualização (conforme fornecido pelo FlowDocumentReaderViewingMode enumeração), às custas sendo mais intensivo de FlowDocumentPageViewer ou FlowDocumentScrollViewer.

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

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

OSystem.IO.Packaging APIs fornecem um meio eficaz para organizar os dados de aplicativo, o conteúdo do 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 uma Package tipo capaz de manter vários objetos como uma única unidade. O empacotamento APIs fornecer um padrão ZipPackage implementação criada usando um padrão Open Packaging Conventions com arquitetura de arquivos XML e ZIP. O WPF empacotamento APIs tornam simples para criar pacotes e para armazenar e acessar objetos dentro deles. Um objeto armazenado em um Package é conhecido como um PackagePart ("parte"). Pacotes também podem incluir certificados digitais assinados que podem ser usados 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 PackageRelationship recurso que permite que informações adicionais sejam adicionados 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 suporte RM (Microsoft Windows Rights Management).

O WPF arquitetura de pacote serve como base para um número de tecnologias-chave:

  • XPS documentos em conformidade com a XPS (XML Paper Specification).

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

  • Formato customizado de armazenamento para o design do seu próprio aplicativo.

Com base em APIs de empacotamento, um XpsDocument é projetado especificamente para armazenar WPF documentos de conteúdo fixo. Um XpsDocument é um documento independente que pode ser aberto em um visualizador, exibido em um DocumentViewer control, roteada para uma fila de impressão ou impresso diretamente em um XPS-impressora compatível.

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

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

PackagePart

O conteúdo do aplicativo, os dados, documentos e arquivos de recurso.

PackageDigitalSignature

Certificado x. 509 para identificação, autenticação e validação.

PackageRelationship

Adicionadas informações relacionadas ao pacote ou uma parte específica.

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 armazenados no diretório hierárquico ou organização de "estilo pasta". Usando o WPF APIs de empacotamento, aplicativos podem escrever, armazenar e ler múltiplos PackagePart objetos usando um único contêiner de arquivo ZIP.

Para segurança, um PackageDigitalSignature ("assinatura digital") pode ser associada a partes em um pacote. Um PackageDigitalSignature incorpora um 509 que fornece dois recursos:

  1. Identifica e autentica o autor da parte.

  2. Valida que a parte não foi modificada.

A assinatura digital não impede uma parte de ser modificada, mas uma verificação de validação contra a assinatura digital irá falhar se a parte for alterada de alguma forma. O aplicativo pode adotar a ação adequada — por exemplo, bloquear a abertura da parte ou notificar o usuário que a parte foi modificada e não é segura.

Um PackageRelationship ("relação") fornece um mecanismo para associar informações adicionais com o pacote ou uma parte dentro do pacote. Uma relação é um recurso de nível de pacote que pode associar informações adicionais com 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 atual 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 para adicionar novas informações.

  • A parte pode ser assinada digitalmente ou criptografada, impossibilitando qualquer modificação.

Relações de pacotes fornecem um meio para adicionar e associar informações adicionais com partes individuais ou com o pacote inteiro. Relações de pacotes são usadas para duas funções principais:

  1. Definir relações de dependência de uma parte para outra parte.

  2. Definir relacionamentos de informação que adicionam notas ou outros dados relacionados à parte.

A 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.

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

Semelhante a uma observação ou anotação, um PackageRelationship também pode ser usado 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.

XPS (XML Paper Specification) documento é um pacote que contém um ou mais documentos fixos junto com todos os recursos e informações necessárias para processamento.XPS também é nativo Windows Vista formato de arquivo de spool de impressão. Um XpsDocument é armazenado em um dataset ZIP padrão e pode incluir uma combinação de componentes XML e binários, como arquivos de imagem e fontes. PackageRelationships são usados para definir as dependências entre o conteúdo e os recursos requeridos para renderizar completamente o documento. O XpsDocument design fornece uma solução de documento único e de alta fidelidade que suporta múltiplos usos:

  • Leitura, escrita, e armazenamento de conteúdo de documentos fixos como um arquivo único, portátil e fácil de distribuir.

  • Exibir documentos com o XPS aplicativo visualizador.

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

  • Encaminhar documentos diretamente para uma XPS-impressora compatível.

Mostrar: