Información general sobre impresiónPrinting Overview

Con Microsoft .NET Framework, los desarrolladores de aplicaciones que usan Windows Presentation Foundation (WPF) tienen un nuevo conjunto de API de impresión y administración del sistema de impresión.With Microsoft .NET Framework, application developers using Windows Presentation Foundation (WPF) have a rich new set of printing and print system management APIs. Con Windows VistaWindows Vista, algunas de estas mejoras del sistema de impresión también están disponibles para los desarrolladores que crean aplicaciones de Windows FormsWindows Forms, así como para los que usan código no administrado.With Windows VistaWindows Vista, some of these print system enhancements are also available to developers creating Windows FormsWindows Forms applications and developers using unmanaged code. La base de esta nueva funcionalidad es el nuevo formato de archivo XML Paper Specification (XPS) y la ruta de impresión XPS.At the core of this new functionality is the new XML Paper Specification (XPS) file format and the XPS print path.

Este tema contiene las siguientes secciones:This topic contains the following sections.

Sobre XPSAbout XPS

XPS es un formato de documento electrónico, un formato de archivo de cola de impresión y un lenguaje de descripción de página.XPS is an electronic document format, a spool file format and a page description language. Es un formato de documento abierto que usa XMLXML, convenciones de empaquetado abierto (OPC) y otros estándares del sector para crear documentos multiplataforma.It is an open document format that uses XMLXML, Open Packaging Conventions (OPC), and other industry standards to create cross-platform documents. XPS simplifica el proceso mediante el cual los documentos digitales se crean, comparten, imprimen, ven y archivan.XPS simplifies the process by which digital documents are created, shared, printed, viewed, and archived. Para obtener información adicional sobre XPS, consulte documentos XPS.For additional information on XPS, see XPS Documents.

Varias técnicas para imprimir contenido basado en XPS mediante WPFWPF se muestran en Imprimir archivos XPS mediante programación.Several techniques for printing XPS-based content using WPFWPF are demonstrated in Programmatically Print XPS Files. Estos ejemplos le resultarán útil para comprender el contenido de este tema.You may find it useful to reference these samples during review of content contained in this topic. (Los desarrolladores de código no administrado deben ver la documentación de la función MXDC_ESCAPE.(Unmanaged code developers should see documentation for the MXDC_ESCAPE function. Windows Forms desarrolladores deben usar la API en el System.Drawing.Printing espacio de nombres que no admite la ruta de impresión completa de XPS, pero admite una ruta de impresión híbrida de GDI a XPS.Windows Forms developers must use the API in the System.Drawing.Printing namespace which does not support the full XPS print path, but does support a hybrid GDI-to-XPS print path. Consulte el siguiente apartado Arquitectura de la ruta de impresión).See Print Path Architecture below.)

Ruta de impresión XPSXPS Print Path

La ruta de impresión de XML Paper Specification (XPS) es una nueva característica de Windows que vuelve a definir la forma en que se controla la impresión en aplicaciones de Windows.The XML Paper Specification (XPS) print path is a new Windows feature that redefines how printing is handled in Windows applications. Dado que XPS puede reemplazar un lenguaje de presentación de documentos (como RTF), un formato de administrador de trabajos de impresión (como WMF) y un lenguaje de descripción de páginas (como PCL o PostScript); la nueva ruta de impresión mantiene el formato XPS de la publicación de la aplicación al procesamiento final en el dispositivo o controlador de impresión.Because XPS can replace a document presentation language (such as RTF), a print spooler format (such as WMF), and a page description language (such as PCL or Postscript); the new print path maintains the XPS format from application publication to the final processing in the print driver or device.

La ruta de impresión XPS se basa en el modelo de controlador de impresora XPS (XPSDrv), que proporciona varias ventajas a "lo que ve es lo que imprime" (WYSIWYG)"what you see is what you get" (WYSIWYG) los desarrolladores, como impresión, soporte de color mejorado y rendimiento de impresión considerablemente mejorado.The XPS print path is built upon the XPS printer driver model (XPSDrv), which provides several benefits for developers such as "lo que ve es lo que imprime" (WYSIWYG)"what you see is what you get" (WYSIWYG) printing, improved color support, and significantly improved print performance. (Para obtener más información sobre XPSDrv, consulte la documentación del kit de controladores de Windows).(For more on XPSDrv, see the Windows Driver Kit documentation.)

La operación del administrador de trabajos de impresión para documentos XPS es esencialmente la misma que en versiones anteriores de Windows.The operation of the print spooler for XPS documents is essentially the same as in previous versions of Windows. Sin embargo, se ha mejorado para admitir la ruta de impresión XPS además de la ruta de impresión de GDI existente.However, it has been enhanced to support the XPS print path in addition to the existing GDI print path. La nueva ruta de impresión usa de forma nativa un archivo de cola XPS.The new print path natively consumes an XPS spool file. Aunque los controladores de impresora de modo de usuario escritos para versiones anteriores de Windows seguirán funcionando, es necesario un controlador de impresora XPS (XPSDrv) para poder usar la ruta de impresión XPS.While user-mode printer drivers written for previous versions of Windows will continue to work, an XPS printer driver (XPSDrv) is required in order to use the XPS print path.

Las ventajas de la ruta de impresión XPS son significativas e incluyen:The benefits of the XPS print path are significant, and include:

  • Soporte de impresión WYSIWYGWYSIWYG.WYSIWYGWYSIWYG print support

  • Soporte nativo de perfiles de color avanzados, que incluyen 32 bits por canal (bpc), CMYK, colores con nombre, tintas n y soporte nativo de transparencia y degradados.Native support of advanced color profiles, which include 32 bits per channel (bpc), CMYK, named-colors, n-inks, and native support of transparency and gradients.

  • Rendimiento de impresión mejorado para aplicaciones .NET Framework Win32Win32 y basadas en.Improved print performance for both .NET Framework and Win32Win32 based applications.

  • Formato XPS estándar del sector.Industry standard XPS format.

En el caso de los escenarios de impresión básicos, hay disponible una API sencilla e intuitiva con un único punto de entrada para la interfaz de usuario, la configuración y el envío de trabajos.For basic print scenarios, a simple and intuitive API is available with a single entry point for user interface, configuration and job submission. Para los escenarios avanzados se agrega soporte adicional para la personalización de la interfaz de usuario (UI)user interface (UI) (o sin IUUI), impresión sincrónica o asincrónica y capacidades de impresión por lotes.For advanced scenarios, an additional support is added for interfaz de usuario (UI)user interface (UI) customization (or no IUUI at all), synchronous or asynchronous printing, and batch printing capabilities. Ambas opciones ofrecen soporte de impresión en modo de confianza plena o parcial.Both options provide print support in full or partial trust mode.

XPS se diseñó teniendo en cuenta la extensibilidad.XPS was designed with extensibility in mind. Con el marco de extensibilidad, se pueden agregar características y capacidades a XPS de una manera modular.By using the extensibility framework, features and capabilities can be added to XPS in a modular manner. Las características de extensibilidad incluyen:Extensibility features include:

  • Esquema de impresión.Print Schema. El esquema público se actualiza periódicamente y permite la extensión rápida de las capacidades del dispositivo.The public schema is updated regularly and enables rapid extension of device capabilities. (Consulte más abajo PrintTicket y PrintCapabilities).(See PrintTicket and PrintCapabilities below.)

  • Canalización de filtros extensible.Extensible Filter Pipeline. La canalización de filtros del controlador de impresora XPS (XPSDrv) se diseñó para habilitar la impresión directa y escalable de documentos XPS.The XPS printer driver (XPSDrv) filter pipeline was designed to enable both direct and scalable printing of XPS documents. Para obtener más información, consulte controladores de impresora XPSDrv.For more information, see XPSDrv Printer Drivers.

Aunque las aplicaciones Win32Win32 dey.NETFrameworkadmitenXPS,ylasaplicacionesdeWindowsFormsusanunaconversióndeGDIaXPSparacrearcontenidoconformatoXPSparaelcontroladordeimpresoraXPSWin32Win32 (XPSDrv).While both Win32Win32 and .NET Framework applications support XPS, Win32Win32 and Windows Forms applications use a GDI to XPS conversion in order to create XPS formatted content for the XPS printer driver (XPSDrv). Estas aplicaciones no necesitan usar la ruta de impresión XPS y pueden seguir utilizando la impresión basada en metarchivo mejorado (EMF).These applications are not required to use the XPS print path, and can continue to use Enhanced Metafile (EMF) based printing. Sin embargo, la mayoría de las características y mejoras de XPS solo están disponibles para las aplicaciones que tienen como destino la ruta de impresión XPS.However, most XPS features and enhancements are only available to applications that target the XPS print path.

Para habilitar el uso de las impresoras basadas en XPSDrv Win32Win32 por parte de y Windows Forms aplicaciones, el controlador de impresora XPS (XPSDrv) admite la conversión de GDI al formato XPS.To enable the use of XPSDrv-based printers by Win32Win32 and Windows Forms applications, the XPS printer driver (XPSDrv) supports conversion of GDI to XPS format. El modelo XPSDrv también proporciona un convertidor para el formato de XPS a GDI Win32Win32 para que las aplicaciones puedan imprimir documentos XPS.The XPSDrv model also provides a converter for XPS to GDI format so that Win32Win32 applications can print XPS Documents. En WPFWPF el caso de las aplicaciones, los Write métodos y WriteAsync de la XpsDocumentWriter clase realizan automáticamente la conversión del formato XPS a GDI siempre que la cola de impresión de destino de la operación de escritura no tenga un controlador XPSDrv.For WPFWPF applications, conversion of XPS to GDI format is done automatically by the Write and WriteAsync methods of the XpsDocumentWriter class whenever the target print queue of the write operation does not have an XPSDrv driver. (Windows Forms aplicaciones no pueden imprimir documentos XPS).(Windows Forms applications cannot print XPS Documents.)

En la ilustración siguiente se muestra el subsistema de impresión y se definen las partes proporcionadas por Microsoft y las partes definidas por los proveedores de software y hardware:The following illustration depicts the print subsystem and defines the portions provided by Microsoft, and the portions defined by software and hardware vendors:

Captura de pantalla que muestra el sistema de impresión XPS.

Impresión XPS básicaBasic XPS Printing

WPFWPFdefine una API básica y avanzada.defines both a basic and advanced API. En el caso de las aplicaciones que no requieren una personalización de impresión amplia o el acceso al conjunto completo de características de XPS, está disponible el soporte básico de impresión.For those applications that do not require extensive print customization or access to the complete XPS feature set, basic print support is available. El soporte básico de impresión se expone a través de un control de diálogo de impresión que requiere una configuración mínima y presenta una IUUI reconocible.Basic print support is exposed through a print dialog control that requires minimal configuration and features a familiar IUUI. Muchas características de XPS están disponibles con este modelo de impresión simplificado.Many XPS features are available using this simplified print model.

PrintDialogPrintDialog

El System.Windows.Controls.PrintDialog control proporciona un único punto de entrada IUUIpara, configuración y envío de trabajos XPS.The System.Windows.Controls.PrintDialog control provides a single entry point for IUUI, configuration, and XPS job submission. Para obtener información sobre la creación de instancias y el uso del control, consulte Invocar un cuadro de diálogo de impresión.For information about how to instantiate and use the control, see Invoke a Print Dialog.

Impresión XPS avanzadaAdvanced XPS Printing

Para tener acceso al conjunto completo de características de XPS, se debe usar la API de impresión avanzada.To access the complete set of XPS features, the advanced print API must be used. A continuación se describen con más detalle varias API pertinentes.Several relevant API are described in greater detail below. Para obtener una lista completa de las API de ruta de impresión System.Windows.Xps XPS System.Printing , consulte las referencias de espacio de nombres y.For a complete list of XPS print path APIs, see the System.Windows.Xps and System.Printing namespace references.

PrintTicket y PrintCapabilitiesPrintTicket and PrintCapabilities

Las PrintTicket clases PrintCapabilities y son la base de las características avanzadas de XPS.The PrintTicket and PrintCapabilities classes are the foundation of the advanced XPS features. Ambos tipos de objetos son estructuras con formato XMLXML de características orientadas a la impresión, como intercalación, impresión a dos caras, grapado, etc. Estas estructuras se definen mediante el esquema de impresión.Both types of objects are XMLXML formatted structures of print-oriented features such as collation, two-sided printing, stapling, etc. These structures are defined by the print schema. Un PrintTicket indica a una impresora cómo procesar un trabajo de impresión.A PrintTicket instructs a printer how to process a print job. La clase PrintCapabilities define las capacidades de una impresora.The PrintCapabilities class defines the capabilities of a printer. Mediante una consulta de las capacidades de una impresora, se puede crear un PrintTicket que aproveche al máximo las características compatibles de una impresora.By querying the capabilities of a printer, a PrintTicket can be created that takes full advantage of a printer's supported features. De forma similar, se pueden evitar las características no compatibles.Similarly, unsupported features can be avoided.

En el ejemplo siguiente se muestra cómo consultar las PrintCapabilities de una impresora y crear un PrintTicket mediante código.The following example demonstrates how to query the PrintCapabilities of a printer and create a PrintTicket using code.

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

   LocalPrintServer^ localPrintServer = gcnew 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
   {
      return nullptr;
   }
   // 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()
// ---------------------- 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()
' ---------------------- GetPrintTicketFromPrinter -----------------------
''' <summary>
'''   Returns a PrintTicket based on the current default printer.</summary>
''' <returns>
'''   A PrintTicket for the current local default printer.</returns>
Private Function GetPrintTicketFromPrinter() As PrintTicket
    Dim printQueue As PrintQueue = Nothing

    Dim localPrintServer As New LocalPrintServer()

    ' Retrieving collection of local printer on user machine
    Dim localPrinterCollection As PrintQueueCollection = localPrintServer.GetPrintQueues()

    Dim localPrinterEnumerator As System.Collections.IEnumerator = localPrinterCollection.GetEnumerator()

    If localPrinterEnumerator.MoveNext() Then
        ' Get PrintQueue from first available printer
        printQueue = CType(localPrinterEnumerator.Current, PrintQueue)
    Else
        ' No printer exist, return null PrintTicket
        Return Nothing
    End If

    ' Get default PrintTicket from printer
    Dim printTicket As PrintTicket = printQueue.DefaultPrintTicket

    Dim printCapabilites As PrintCapabilities = printQueue.GetPrintCapabilities()

    ' Modify PrintTicket
    If printCapabilites.CollationCapability.Contains(Collation.Collated) Then
        printTicket.Collation = Collation.Collated
    End If

    If printCapabilites.DuplexingCapability.Contains(Duplexing.TwoSidedLongEdge) Then
        printTicket.Duplexing = Duplexing.TwoSidedLongEdge
    End If

    If printCapabilites.StaplingCapability.Contains(Stapling.StapleDualLeft) Then
        printTicket.Stapling = Stapling.StapleDualLeft
    End If

    Return printTicket
End Function ' end:GetPrintTicketFromPrinter()

PrintServer y PrintQueuePrintServer and PrintQueue

La clase PrintServer representa un servidor de impresión de red y la clase PrintQueue representa una impresora y la cola de trabajos de salida asociados a él.The PrintServer class represents a network print server and the PrintQueue class represents a printer and the output job queue associated with it. Juntas, estas API permiten la administración avanzada de los trabajos de impresión de un servidor.Together, these APIs allow advanced management of a server's print jobs. Un PrintServer, o una de sus clases derivadas, se usa para administrar un PrintQueue.A PrintServer, or one of its derived classes, is used to manage a PrintQueue. El método AddJob se usa para insertar un nuevo trabajo de impresión en la cola.The AddJob method is used to insert a new print job into the queue.

En el ejemplo siguiente se muestra cómo crear un LocalPrintServer y tener acceso a su PrintQueue predeterminado mediante código.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()
' -------------------- GetPrintXpsDocumentWriter() -------------------
''' <summary>
'''   Returns an XpsDocumentWriter for the default print queue.</summary>
''' <returns>
'''   An XpsDocumentWriter for the default print queue.</returns>
Private Function GetPrintXpsDocumentWriter() As XpsDocumentWriter
    ' Create a local print server
    Dim ps As New LocalPrintServer()

    ' Get the default print queue
    Dim pq As PrintQueue = ps.DefaultPrintQueue

    ' Get an XpsDocumentWriter for the default print queue
    Dim xpsdw As XpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(pq)
    Return xpsdw
End Function ' end:GetPrintXpsDocumentWriter()

XpsDocumentWriterXpsDocumentWriter

, Con sus Write numerosos métodos y WriteAsync , se usa para escribir documentos XPS en un PrintQueue. XpsDocumentWriterAn XpsDocumentWriter, with its many the Write and WriteAsync methods, is used to write XPS documents to a PrintQueue. Por ejemplo, el Write(FixedPage, PrintTicket) método se usa para generar un documento XPS y PrintTicket de forma sincrónica.For example, the Write(FixedPage, PrintTicket) method is used to output an XPS document and PrintTicket synchronously. El WriteAsync(FixedDocument, PrintTicket) método se usa para generar un documento XPS y PrintTicket de forma asincrónica.The WriteAsync(FixedDocument, PrintTicket) method is used to output an XPS document and PrintTicket asynchronously.

En el siguiente ejemplo se muestra cómo crear un XpsDocumentWriter mediante código.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()
' -------------------- GetPrintXpsDocumentWriter() -------------------
''' <summary>
'''   Returns an XpsDocumentWriter for the default print queue.</summary>
''' <returns>
'''   An XpsDocumentWriter for the default print queue.</returns>
Private Function GetPrintXpsDocumentWriter() As XpsDocumentWriter
    ' Create a local print server
    Dim ps As New LocalPrintServer()

    ' Get the default print queue
    Dim pq As PrintQueue = ps.DefaultPrintQueue

    ' Get an XpsDocumentWriter for the default print queue
    Dim xpsdw As XpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(pq)
    Return xpsdw
End Function ' end:GetPrintXpsDocumentWriter()

Los métodos AddJob también proporcionan formas de imprimir.The AddJob methods also provide ways to print. Consulte Imprimir archivos XPS mediante programación.See Programmatically Print XPS Files. para obtener información detallada.for details.

Ruta de impresión GDIGDI Print Path

Aunque WPFWPF las aplicaciones admiten de forma nativa la ruta Win32Win32 de impresión de XPS, y Windows Forms aplicaciones también pueden aprovechar algunas características de XPS.While WPFWPF applications natively support the XPS print path, Win32Win32 and Windows Forms applications can also take advantage of some XPS features. El controlador de impresora XPS (XPSDrv) puede convertir la salida basada en GDI al formato XPS.The XPS printer driver (XPSDrv) can convert GDI based output to XPS format. En escenarios avanzados, se admite la conversión personalizada de contenido mediante el convertidor de documentos XPS de Microsoft (MXDC).For advanced scenarios, custom conversion of content is supported using the Microsoft XPS Document Converter (MXDC). Del mismo WPFWPF modo, las aplicaciones también pueden generar resultados en la ruta de impresión GDI Write llamando a uno de XpsDocumentWriter los métodos o WriteAsync de la clase y designando una impresora que no sea XpsDrv como cola de impresión de destino.Similarly, WPFWPF applications can also output to the GDI print path by calling one of the Write or WriteAsync methods of the XpsDocumentWriter class and designating a non-XpsDrv printer as the target print queue.

En el caso de las aplicaciones que no requieren funcionalidad o soporte XPS, la ruta de impresión GDI actual permanece sin cambios.For applications that do not require XPS functionality or support, the current GDI print path remains unchanged.

Modelo de controlador XPSDrvXPSDrv Driver Model

La ruta de impresión XPS mejora la eficacia del administrador de trabajos de impresión mediante el uso de XPS como formato nativo de la cola de impresión cuando se imprime en una impresora o un controlador habilitado para XPS.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. El proceso de puesta en cola simplificado elimina la necesidad de generar un archivo de cola intermedio, como un archivo de datos EMF, antes de que se pongan en cola el documento.The simplified spooling process eliminates the need to generate an intermediate spool file, such as an EMF data file, before the document is spooled. A través de tamaños de archivo de cola más pequeños, la ruta de impresión XPS puede reducir el tráfico de red y mejorar el rendimiento de impresión.Through smaller spool file sizes, the XPS print path can reduce network traffic and improve print performance.

EMF es un formato cerrado que representa la salida de la aplicación como una serie de llamadas a GDI para los servicios de representación.EMF is a closed format that represents application output as a series of calls into GDI for rendering services. A diferencia de EMF, el formato de cola XPS representa el documento real sin necesidad de una mayor interpretación cuando se envía a un controlador de impresora basado en XPS (XPSDrv).Unlike EMF, the XPS spool format represents the actual document without requiring further interpretation when output to an XPS-based printer driver (XPSDrv). Los controladores pueden trabajar directamente con los datos en el formato.The drivers can operate directly on the data in the format. Esta capacidad elimina las conversiones de espacio de color y datos que son necesarias cuando se usan archivos EMF y controladores de impresión basados en GDI.This capability eliminates the data and color space conversions required when you use EMF files and GDI-based print drivers.

Los tamaños de los archivos de cola de impresión suelen reducirse cuando se usan documentos XPS que tienen como destino un controlador de impresora XPS (XPSDrv) en comparación con sus equivalentes EMF; sin embargo, hay excepciones: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:

  • Un gráfico vectorial muy complejo, con varias capas o escrito de forma ineficaz puede ser mayor que una versión de mapa de bits del mismo gráfico.A vector graphic that is very complex, multi-layered, or inefficiently written can be larger than a bitmapped version of the same graphic.

  • Para la presentación en pantalla, los archivos XPS insertan fuentes del dispositivo y del equipo, mientras que los archivos de cola de impresión GDI no insertan fuentes de dispositivo.For screen display purposes, XPS files embed device fonts as well as computer-based fonts; whereas GDI spool files do not embed device fonts. Sin embargo, ambos tipos de fuentes se incluyen en un subconjunto (ver abajo) y los controladores de impresora pueden quitar las fuentes de dispositivo antes de transmitir el archivo a la impresora.But both kinds of fonts are subsetted (see below) and printer drivers can remove the device fonts before transmitting the file to the printer.

La reducción del tamaño de cola de impresión se consigue a través de varios mecanismos:Spool size reduction is performed through several mechanisms:

  • Creación de un subconjunto de fuentes.Font subsetting. Solo los caracteres usados en el documento real se almacenan en el archivo XPS.Only characters used within the actual document are stored in the XPS file.

  • Compatibilidad con gráficos avanzados.Advanced Graphics Support. La compatibilidad nativa con la transparencia y las primitivas de degradado evita la rasterización del contenido en el documento XPS.Native support for transparency and gradient primitives avoids rasterization of content in the XPS Document.

  • Identificación de recursos comunes.Identification of common resources. Los recursos que se usan varias veces (como una imagen que representa un logotipo corporativo) se tratan como recursos compartidos y se cargan solamente una vez.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.

  • Compresión ZIP.ZIP compression. Todos los documentos XPS usan la compresión ZIP.All XPS documents use ZIP compression.

Vea tambiénSee also