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
Esta documentação foi arquivada e não está sendo atualizada.

Visão Geral de 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 o uso de conteúdo WPF , serão demonstrados em Como: Programmatically Print XPS Files. 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.)

  • Extensible Filter Pipeline. 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.)

Print Path Architecture

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.

O sistema de impressão XPS

Basic XPS Printing

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.

PrintDialog

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.

Advanced XPS Printing

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.

PrintTicket and 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()


PrintServer and PrintQueue

The PrintServer class represents a network print server and the PrintQueue class represents a printer and the output job queue associated with it. Together, these APIs allow advanced management of a server's print jobs. A PrintServer, or one of its derived classes, is used to manage a PrintQueue. The AddJob method is used to insert a new print job into the queue.

The following example demonstrates how to create a LocalPrintServer and access its default PrintQueue by using code.


// -------------------- 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()


XpsDocumentWriter

An XpsDocumentWriter, with its many the Write and WriteAsync methods, is used to write XPS documents to a PrintQueue. For example, the Write(FixedPage, PrintTicket) method is used to output an XPS document and PrintTicket synchronously. The WriteAsync(FixedDocument, PrintTicket) method is used to output an XPS document and PrintTicket asynchronously.

The following example demonstrates how to create an XpsDocumentWriter using code.


// -------------------- 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. See Como: Programmatically Print XPS Files. Para obter detalhes.

Enquanto WPF aplicativos nativamente suporte a XPS Imprimir o caminho, Win32 e Windows Forms aplicativos também podem tirar proveito de alguns XPS recursos. The XPS printer driver (XPSDrv) can convert GDI based output to XPS format. 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, WPF aplicativos também podem dar saída a GDI caminho de impressão, chamando um da Write ou WriteAsync métodos da XpsDocumentWriter classe e designando uma impressora não XpsDrv como o destino de impressão fila.

For applications that do not require XPS functionality or support, the current GDI print path remains unchanged.

The XPS print path improves spooler efficiency by using XPS as the native print spool format when printing to an XPS -enabled printer or driver. The simplified spooling process eliminates the need to generate an intermediate spool file, such as an EMF data file, before the document is spooled. Through smaller spool file sizes, the XPS print path can reduce network traffic and improve print performance.

EMF is a closed format that represents application output as a series of calls into GDI for rendering services. Unlike EMF, the XPS spool format represents the actual document without requiring further interpretation when output to an XPS-based printer driver (XPSDrv). The drivers can operate directly on the data in the format. This capability eliminates the data and color space conversions required when you use EMF files and GDI-based print drivers.

Spool file sizes are usually reduced when you use XPS Documents that target an XPS printer driver (XPSDrv) compared with their EMF equivalents; however, there are exceptions:

  • A vector graphic that is very complex, multi-layered, or inefficiently written can be larger than a bitmapped version of the same graphic.

  • For screen display purposes, XPS files embed device fonts as well as computer-based fonts; whereas GDI spool files do not embed device fonts. But both kinds of fonts are subsetted (see below) and printer drivers can remove the device fonts before transmitting the file to the printer.

Spool size reduction is performed through several mechanisms:

  • Font subsetting. Only characters used within the actual document are stored in the XPS file.

  • Advanced Graphics Support. Native support for transparency and gradient primitives avoids rasterization of content in the XPS Document.

  • Identification of common resources. Resources that are used multiple times (such as an image that represents a corporate logo) are treated as shared resources and are loaded only once.

  • ZIP compression. Todos os documentos XPS usam compressão ZIP.

Mostrar: