Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Visão geral da impressão

Com o Microsoft .NET Framework, os desenvolvedores de aplicativos usando Windows Presentation Foundation (WPF) tem um rico e novo conjunto sistemas de impressão e novas APIs de gerenciamento de impressão.
Com o Windows Vista, alguns desses melhoramentos de sistemas de impressão estão disponíveis para desenvolvedores criando Windows Forms applications (WPFs) e desenvolvedores utilizando código não gerenciado.
O núcleo desta nova funcionalidade é o novo formato de arquivo XPS (XML Paper Specification) e o XPS print path.

Este tópico contém as seguintes seções.

XPS é um formato eletrônico de documento, um arquivo de formato de spool e uma linguagem de descrição de página.
É um formato de documento aberto que usa XML, Open Packaging Conventions (OPC) e outros padrões da indústria para criar documentos de várias plataformas.
O XPS simplifica o processo pelo qual os documentos digitais são criados, compartilhados, impressos, visualizados e arquivados.
Para informações adicionais sobre o XPS, visite o XPS Web Site.

Várias técnicas para impressão XPS com base no conteúdo usando WPF , serão demonstrados em Como imprimir arquivos XPS de forma programática. Talvez você ache útil para fazer referência a essas amostras durante a revisão do conteúdo contido neste tópico. (Os desenvolvedores de código não gerenciado devem ver a Ajuda para o escape de impressora do conversor de documentos do Microsoft XPS. Desenvolvedores de Windows Forms devem usar a API no namespace System.Drawing.Printing, que não oferece suporte completo do XPS print path, mas oferece suporte ao GDI-to-XPS print path híbrido. Consulte Arquitetura de Caminho de Impressão abaixo.)

O XPS print path (XML Paper Specification) é um novo recurso do Windows que redefine como a impressão é tratada nas aplicações Windows. Devido ao XPS poder substituir um documento de apresentação (como RTF), um formato de spooler de impressão (como WMF) e uma linguagem de descrição de página (como Postscript ou PCL); o novo print path mantém o formato XPS de publicação do aplicativo até o final do processamento no driver de impressão ou dispositivo.

O XPS print path é construído sobre o XPSDrv (XPS printer driver model) o qual oferece vários benefícios para desenvolvedores como o " o que você vê é o que você tem" (WYSIWYG - "what you see is what you get") impressão, suporte de cor melhorado, e performance de impressão significativamente melhorada.

(Para mais informações sobre o XPSDrv, consulte o Windows Driver Development Kit).

A operação do print spooler para documentos XPS é essencialmente a mesma encontrada nas versões anteriores do Windows. Entretanto ela tem sido melhorada para suportar o XPS print path além do GDI print path existente. O novo "print path" consome nativamente um arquivo de spool XPS. enquanto os drivers de impressão de modo usuário construídos para versões anteriores do Windows contiunuam trabalhando, um driver XPS (XPSDrv) é necessário para utilizar o XPS print path.

Os benefícios do XPS print path são significantivos, inclusive:

  • Suporte ao modo WYSIWYG print

  • Suporte nativo de perfis de cor avançados, que inclui 32 bits por canal (bpc), CMYK, named-colors, n-inks, e suporte nativo a transparência e a gradientes.

  • Performance de impressão melhorada para ambos .NET Framework e aplicações baseadas em Win32.

  • Formato padrão industrial XPS.

Para cenários básicos de impressão, uma simples e intuitiva API está disponível, com um único ponto de entrada na interface com o usuário, configuração e submissão de trabalhos.
Para cenários avançados, um suporte adicional é a personalização da interface com o usuário (UI) (com ou sem personalização), impressão síncrona ou assíncrona e recursos de lote impressão. Ambas as opções fornecem suporte de impressão no modo de confiança total ou parcial (trust mode).

O XPS foi projetado com possibilidades de expansão em mente.
Utilizando o framework de estensão, recursos e capacidades podem ser adicionadas ao XPS de forma modular. Os recursos de expansão incluem:

  • Esquema de impressão. O esquema público é atualizado regularmente e habilita a extensão rápida dos recursos do dispositivo. (Consulte PrintTicket and PrintCapabilities abaixo.)

  • Pipeline extensível de filtragem. O driver XPS (XPSDrv) filter pipeline foi projetado para habilitar impressão de documentos XPS de modo direto ou em escala. (Consulte"XPSDrv" no Windows Driver Development Kit.)

ms742418.collapse_all(pt-br,VS.110).gifArquitetura de Caminho de Impressão

Enquanto aplicações Win32 e .NET Framework suportarem XPS, aplicações Win32 e aplicações Windows Forms utlizam o GDI para conversão em XPS para poder gerar o conteúdo formatado XPS para o driver de impressão XPS (XPSDrv). Estas aplicações não são requeridas para utilizar o XPS print path, e podem continuar usando o EMF (Enhanced Metafile). No entanto, a maioria dos recursos e aprimoramentos XPS estão disponíveis somente para aplicativos que se destinam ao XPS print path.

Para ativar o uso de impressoras baseado em XPSDrv, por Win32 e aplicativos Windows Forms, o driver de impressora XPS (XPSDrv) oferece suporte à conversão de GDI para formato XPS . O modelo XPSDrv também fornece um conversor de XPS para formato GDI para que aplicativos Win32 possam imprimir documentos XPS. Para aplicativos WPF, a conversão de XPS para formato GDI é feita automaticamente pelos métodos Write e WriteAsync para a classe XpsDocumentWriter sempre que a fila de impressão de destino da operação de gravação não tiver um driver de XPSDrv. ( Aplicativos Windows Forms não podem imprimir documentos XPS.)

A seguinte ilustração mostra o subsistema de impressão e define a porção fornecida pela Microsoft, e a porção definida pelo software e hardware dos fornecedores.

The XPS Print System

ms742418.collapse_all(pt-br,VS.110).gifImpressão XPS básica

WPF define as APIs básicas e avançadas.
Para aquelas aplicações que não exigem configurações de impressão extensivas ou acesso completo à configuração do recurso XPS, suporte básico à impressão é disponibilizado.
O suporte básico de impressão e mostrado através de uma caixa de diálogo de impressão que requer uma configuração mínima e oferece uma Interface (UI) familiar ao usuário.
Muitos recursos XPS estão disponíveis utilizando este modelo simplificado de impressão.

ms742418.collapse_all(pt-br,VS.110).gifPrintDialog

O controle System.Windows.Controls.PrintDialog oferece um ponto de entrada simples na interface com o usuário (UI), configuração e submissão de XPS jobs. Para informação sobre como instanciar e utilizar o controle, consulte o Como fazer: Como: Chamar um diálogo de impressão.

ms742418.collapse_all(pt-br,VS.110).gifImpressão XPS Avançada

Para acessar o módulo completo de recursos XPS, a API de impressão avançada deverá ser utilizada.
Várias APIs relevantes são descritas detalhadamente abaixo.
Para obter uma lista completa de APIs do XPS print path, consulte as referências do namespace System.Windows.Xps e System.Printing.

ms742418.collapse_all(pt-br,VS.110).gifPrintTicket e PrintCapabilities

As classes PrintTicket e PrintCapabilities são a base de recursos avançados do XPS. Ambos os tipos de objetos são estruturas formatadas XML de recursos orientados a impressão, como o agrupamento, a impressão dos dois lados, grampeamento, etc.
Essas estruturas são definidas pelo esquema de impressão. O PrintTicket instrui a impressora a processar um serviço de impressão. A classe PrintCapabilities define as capacidades de uma impressora. Ao consultar os recursos de uma impressora, o PrintTicket pode ser criado para tirar o melhor proveito dos recursos oferecidos de uma impressora.
Similarmente, recursos não suportados podem ser evitados.

O seguinte exemplo demonstra como consultar a PrintCapabilities de uma impressora e criar um PrintTicket utilizando código.


// ---------------------- GetPrintTicketFromPrinter -----------------------
/// <summary>
///   Returns a PrintTicket based on the current default printer.</summary>
/// <returns>
///   A PrintTicket for the current local default printer.</returns>
private PrintTicket GetPrintTicketFromPrinter()
{
    PrintQueue printQueue = null;

    LocalPrintServer localPrintServer = new LocalPrintServer();

    // Retrieving collection of local printer on user machine
    PrintQueueCollection localPrinterCollection =
        localPrintServer.GetPrintQueues();

    System.Collections.IEnumerator localPrinterEnumerator =
        localPrinterCollection.GetEnumerator();

    if (localPrinterEnumerator.MoveNext())
    {
        // Get PrintQueue from first available printer
        printQueue = (PrintQueue)localPrinterEnumerator.Current;
    }
    else
    {
        // No printer exist, return null PrintTicket
        return null;
    }

    // Get default PrintTicket from printer
    PrintTicket printTicket = printQueue.DefaultPrintTicket;

    PrintCapabilities printCapabilites = printQueue.GetPrintCapabilities();

    // Modify PrintTicket
    if (printCapabilites.CollationCapability.Contains(Collation.Collated))
    {
        printTicket.Collation = Collation.Collated;
    }

    if ( printCapabilites.DuplexingCapability.Contains(
            Duplexing.TwoSidedLongEdge) )
    {
        printTicket.Duplexing = Duplexing.TwoSidedLongEdge;
    }

    if (printCapabilites.StaplingCapability.Contains(Stapling.StapleDualLeft))
    {
        printTicket.Stapling = Stapling.StapleDualLeft;
    }

    return printTicket;
}// end:GetPrintTicketFromPrinter()


ms742418.collapse_all(pt-br,VS.110).gifPrintServer e PrintQueue

A classe PrintServer representa um servidor de impressão de rede e a classe PrintQueue representa uma impressora e a fila de trabalhos de saída associada a ela. Juntas, essas APIs permitem o gerenciamento avançado de um servidor de trabalhos de impressão. Um PrintServer, ou uma de suas classes derivadas, é usado para gerenciar uma PrintQueue. O método AddJob é usado para inserir um novo trabalho de impressão na fila.

O exemplo a seguir demonstra como criar um LocalPrintServer e acessar sua PrintQueue padrão usando código.


// -------------------- GetPrintXpsDocumentWriter() -------------------
/// <summary>
///   Returns an XpsDocumentWriter for the default print queue.</summary>
/// <returns>
///   An XpsDocumentWriter for the default print queue.</returns>
private XpsDocumentWriter GetPrintXpsDocumentWriter()
{
    // Create a local print server
    LocalPrintServer ps = new LocalPrintServer();

    // Get the default print queue
    PrintQueue pq = ps.DefaultPrintQueue;

    // Get an XpsDocumentWriter for the default print queue
    XpsDocumentWriter xpsdw = PrintQueue.CreateXpsDocumentWriter(pq);
    return xpsdw;
}// end:GetPrintXpsDocumentWriter()


ms742418.collapse_all(pt-br,VS.110).gifXpsDocumentWriter

Um XpsDocumentWriter, com seus diversos métodos Write e WriteAsync é usado para escrever documentos XPS em uma PrintQueue. Por exemplo, o método Write(FixedPage, PrintTicket) é usado para produzir um documento XPS e um PrintTicket de forma síncrona. O método WriteAsync(FixedDocument, PrintTicket) é usado para produzir um documento XPS e um PrintTicket de forma assíncrona.

O exemplo a seguir demonstra como criar um XpsDocumentWriter usando código.


// -------------------- GetPrintXpsDocumentWriter() -------------------
/// <summary>
///   Returns an XpsDocumentWriter for the default print queue.</summary>
/// <returns>
///   An XpsDocumentWriter for the default print queue.</returns>
private XpsDocumentWriter GetPrintXpsDocumentWriter()
{
    // Create a local print server
    LocalPrintServer ps = new LocalPrintServer();

    // Get the default print queue
    PrintQueue pq = ps.DefaultPrintQueue;

    // Get an XpsDocumentWriter for the default print queue
    XpsDocumentWriter xpsdw = PrintQueue.CreateXpsDocumentWriter(pq);
    return xpsdw;
}// end:GetPrintXpsDocumentWriter()


O método AddJob também fornece meios para imprimir. Consulte Como imprimir arquivos XPS de forma programática. Para obter detalhes.

Enquanto aplicativos WPF oferecem suporte nativo ao caminho de impressão XPS, aplicativos Win32 e Windows Forms também podem aproveitar alguns recursos do XPS. O driver de impressora XPS (XPSDrv) pode converter saída baseada em GDI para o formato XPS. Para cenários avançados, a conversão personalizada de conteúdo é suportado usando o escape de impressora do conversor de documentos do Microsoft XPS. Da mesma forma, aplicativos WPF podem também produzir saída para o caminho de impressão GDI chamando um dos métodos Write ou WriteAsync da classe XpsDocumentWriter e designando uma impressora não XpsDrv como a fila de impressão de destino.

Para aplicativos que não requerem funcionalidade ou suporte XPS, o caminho de impressão GDI atual permanece inalterado.

O caminho de impressão XPS aumenta a eficiência do spooler usando XPS como o formato nativo de spool de impressão ao imprimir em uma impressora ou driver com suporte a XPS. O processo simplificado de enfileiramento elimina a necessidade de gerar um arquivo de spool intermediário, como um arquivo de dados EMF, antes do documento ser colocado no spool. Por meio de um arquivo de spool menor, o caminho de impressão XPS pode reduzir o tráfego de rede e melhorar o desempenho de impressão.

EMF é um formato fechado que representa a saída de um aplicativo como uma série de chamadas de serviços de renderização GDI. Ao contrário do EMF, o formato de spool XPS representa o documento real sem exigir mais interpretação quando enviado para um driver de impressora XPS (XPSDrv). Os drivers podem operar diretamente nos dados no formato. Esse recurso elimina as conversões de dados e espaço de cores necessárias quando você usa arquivos EMF e drivers de impressão com base em GDI.

O tamanho dos arquivos de spool são geralmente reduzidos quando você usa documentos XPS que tem como destino um driver de impressora XPS (XPSDrv) em comparação com seus equivalentes EMF; no entanto, há exceções:

  • Um gráfico vetorial que seja muito complexo, multicamadas ou escrito de forma ineficiente pode ser maior do que uma versão bitmap do mesmo elemento gráfico.

  • Para fins de exibição de tela, arquivos XPS incorporam fontes de dispositivo, bem como fontes computer-based; enquanto arquivos de spool GDI não incorporam fontes de dispositivo. Mas os dois tipos de fontes são subdivididas (veja abaixo) e drivers de impressora podem remover as fontes de dispositivo antes de transmiti o arquivo para a impressora.

A redução de tamanho do spool é executada através de vários mecanismos:

  • Subdivisão de Fontes. Somente caracteres usados dentro do documento real são armazenadas no arquivo XPS.

  • Suporte Gráfico Avançado. O suporte nativo a primitivas de transparência e gradiente evita rasterização de conteúdo no documento XPS.

  • Identificação de recursos comuns. Recursos que são usados várias vezes (tais como uma imagem que representa um logotipo corporativo) são tratados como recursos compartilhados e são carregados apenas uma vez.

  • Compactação ZIP. Todos os documentos XPS usam compressão ZIP.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft