Vue d'ensemble de l'impressionPrinting Overview

Avec Microsoft .NET Framework, les développeurs d’applications à l’aide de Windows Presentation Foundation (WPF) ont un nouvel ensemble étoffé d’impression et impression de gestion système APIAPIs.With Microsoft .NET Framework, application developers using Windows Presentation Foundation (WPF) have a rich new set of printing and print system management APIAPIs. Avec Windows VistaWindows Vista, certaines de ces améliorations du système d'impression sont aussi accessibles aux développeurs créant des applications Windows FormsWindows Forms et à ceux utilisant du code non managé.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. Le nouveau format de fichier XPS (XML Paper Specification)XML Paper Specification (XPS) et le chemin d'impression XPSXPS sont au cœur de cette nouvelle fonctionnalité.At the core of this new functionality is the new XPS (XML Paper Specification)XML Paper Specification (XPS) file format and the XPSXPS print path.

Cette rubrique contient les sections suivantes.This topic contains the following sections.

À propos de XPSAbout XPS

XPSXPS est un format de document électronique, un format de fichier de mise en file d'attente (spool) et un langage de description de page. is an electronic document format, a spool file format and a page description language. Il s'agit d'un format de document ouvert qui utilise XMLXML, OPC (Open Packaging Conventions)Open Packaging Conventions (OPC) et d'autres normes du secteur pour créer des documents multiplateformes.It is an open document format that uses XMLXML, OPC (Open Packaging Conventions)Open Packaging Conventions (OPC), and other industry standards to create cross-platform documents. XPSXPS simplifie le processus par lequel documents numériques sont créés, partagés, imprimés, affichés et archivés. simplifies the process by which digital documents are created, shared, printed, viewed, and archived. Pour plus d'informations sur XPSXPS, consultez le site web XPS.For additional information on XPSXPS, see the XPS Web Site.

Plusieurs techniques permettant d'imprimer du contenu XPSXPS en utilisant WPFWPF sont décrites dans Imprimer par programmation des fichiers XPS.Several techniques for printing XPSXPS based content using WPFWPF are demonstrated in Programmatically Print XPS Files. Il peut vous être utile de vous reporter à ces exemples pendant l'examen du contenu de cette rubrique.You may find it useful to reference these samples during review of content contained in this topic. (Les développeurs de code non managé doivent consulter documentation pour le (fonction) MXDC_ESCAPE.(Unmanaged code developers should see documentation for the MXDC_ESCAPE function. Les développeurs Windows Forms doivent utiliser le APIAPI dans le System.Drawing.Printing espace de noms qui ne prend pas en charge la version complète XPSXPS chemin d’impression, mais prend en charge un chemin d’impression hybride de GDI vers XPS.Windows Forms developers must use the APIAPI in the System.Drawing.Printing namespace which does not support the full XPSXPS print path, but does support a hybrid GDI-to-XPS print path. Consultez Architecture du chemin d'impression ci-dessous.)See Print Path Architecture below.)

Chemin d'impression XPSXPS Print Path

Le XPS (XML Paper Specification)XML Paper Specification (XPS) chemin d’impression est un nouveau WindowsWindows fonctionnalité qui redéfinit la gestion de l’impression dans les applications Windows.The XPS (XML Paper Specification)XML Paper Specification (XPS) print path is a new WindowsWindows feature that redefines how printing is handled in Windows applications. Comme XPSXPS peut remplacer un langage de présentation de document (comme RTF), un format de spouleur d'impression (comme WMF) et un langage de description de page (comme PCL ou Postscript), le nouveau chemin d'impression conserve le format XPSXPS de la publication de l'application jusqu'au traitement final dans le pilote ou le périphérique d'impression.Because XPSXPS 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 XPSXPS format from application publication to the final processing in the print driver or device.

Le chemin d'impression XPSXPS repose sur le modèle de pilote d'imprimante XPSXPS (XPSDrv), qui offre aux développeurs plusieurs avantages tels que l'impression WYSIWYG (tel écrit, tel écran)"what you see is what you get" (WYSIWYG), une meilleure prise en charge de la couleur et des performances d'impression nettement améliorées.The XPSXPS print path is built upon the XPSXPS printer driver model (XPSDrv), which provides several benefits for developers such as WYSIWYG (tel écrit, tel écran)"what you see is what you get" (WYSIWYG) printing, improved color support, and significantly improved print performance. (Pour plus d’informations sur XPSDrv, consultez Windows Driver Kit (WDK).)(For more on XPSDrv, see the Windows Driver Development Kit.)

L’opération du spouleur d’impression pour XPSXPS documents est essentiellement identique à celle des versions précédentes de Windows.The operation of the print spooler for XPSXPS documents is essentially the same as in previous versions of Windows. Cependant, il a été amélioré pour prendre en charge le chemin d'impression XPSXPS, en plus du chemin d'impression existante GDIGDI.However, it has been enhanced to support the XPSXPS print path in addition to the existing GDIGDI print path. Le nouveau chemin d'impression utilise un fichier spool XPSXPS en mode natif.The new print path natively consumes an XPSXPS spool file. Bien que les pilotes d'imprimantes en mode utilisateur écrits pour les versions antérieures de WindowsWindows continuent de fonctionner, un pilote d'imprimante XPSXPS (XPSDrv) est nécessaire pour pouvoir utiliser le chemin d'impression XPSXPS.While user-mode printer drivers written for previous versions of WindowsWindows will continue to work, an XPSXPS printer driver (XPSDrv) is required in order to use the XPSXPS print path.

Le chemin d'impression XPSXPS présente des avantages significatifs, à savoir :The benefits of the XPSXPS print path are significant, and include:

  • prise en charge de l'impression WYSIWYGWYSIWYG ;WYSIWYGWYSIWYG print support

  • prise en charge native de profils de couleurs avancés, qui incluent 32 bits par canal (bpc), CMJN, les couleurs nommées, les encres n et prise en charge native de la transparence et des dégradés ;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.

  • Amélioration des performances d’impression pour les deux .NET Framework et Win32Win32 en fonction des applications.Improved print performance for both .NET Framework and Win32Win32 based applications.

  • format XPSXPS conforme aux normes du secteur.Industry standard XPSXPS format.

Pour les scénarios d'impression de base, une APIAPI simple et intuitive est disponible avec un point d'entrée unique pour l'interface utilisateur, la configuration et la soumission de travaux.For basic print scenarios, a simple and intuitive APIAPI is available with a single entry point for user interface, configuration and job submission. Pour les scénarios avancés, une prise en charge supplémentaire est ajoutée pour la personnalisation de l'interface utilisateur (UI)user interface (UI) (ou pas d'Interface utilisateurUI du tout), l'impression synchrone ou asynchrone et les fonctions d'impression par lots.For advanced scenarios, an additional support is added for interface utilisateur (UI)user interface (UI) customization (or no Interface utilisateurUI at all), synchronous or asynchronous printing, and batch printing capabilities. Les deux options assurent une prise en charge de l'impression en mode confiance totale ou partielle.Both options provide print support in full or partial trust mode.

XPSXPS a été conçu dans l'optique d'offrir une extensibilité. was designed with extensibility in mind. Grâce au framework d’extensibilité, il est possible d’ajouter des fonctionnalités et des fonctions à XPSXPS de façon modulaire.By using the extensibility framework, features and capabilities can be added to XPSXPS in a modular manner. Les fonctionnalités d'extensibilité sont les suivantes :Extensibility features include:

  • Schéma d'impression.Print Schema. Le schéma public est mis à jour régulièrement et permet l’extension rapide des fonctions des appareils.The public schema is updated regularly and enables rapid extension of device capabilities. (Consultez PrintTicket et PrintCapabilities ci-dessous.)(See PrintTicket and PrintCapabilities below.)

  • Pipeline de filtres extensible.Extensible Filter Pipeline. Le pipeline de filtres du pilote d'imprimante XPSXPS (XPSDrv) a été conçu pour permettre l'impression directe et évolutive de documents XPSXPS.The XPSXPS printer driver (XPSDrv) filter pipeline was designed to enable both direct and scalable printing of XPSXPS documents. (Recherchez « XPSDrv » dans le Windows Driver Kit.)(Lookup "XPSDrv" in the Windows Driver Kit.)

Alors que les deux Win32Win32 et prennent en charge des applications .NET Framework XPSXPS, Win32Win32 et les applications Windows Forms utilisent un GDIGDI à XPSXPS conversion afin de créer XPSXPS mis en forme du contenu pour le XPSXPSpilote d’imprimante (XPSDrv).While both Win32Win32 and .NET Framework applications support XPSXPS, Win32Win32 and Windows Forms applications use a GDIGDI to XPSXPS conversion in order to create XPSXPS formatted content for the XPSXPS printer driver (XPSDrv). Ces applications ne sont pas tenues d'utiliser le chemin d'impression XPSXPS et peuvent continuer d'utiliser l'impression métafichier amélioré (EMF)Enhanced Metafile (EMF)These applications are not required to use the XPSXPS print path, and can continue to use métafichier amélioré (EMF)Enhanced Metafile (EMF) based printing. Toutefois, la plupart des fonctionnalités et améliorations de XPSXPS sont disponibles uniquement pour les applications qui ciblent le chemin d'impression XPSXPS.However, most XPSXPS features and enhancements are only available to applications that target the XPSXPS print path.

Pour activer l’utilisation d’imprimantes XPSDrv par Win32Win32 et les applications Windows Forms, le XPSXPS pilote d’imprimante (XPSDrv) prend en charge la conversion de GDIGDI à XPSXPS format.To enable the use of XPSDrv-based printers by Win32Win32 and Windows Forms applications, the XPSXPS printer driver (XPSDrv) supports conversion of GDIGDI to XPSXPS format. Le modèle XPSDrv fournit également un convertisseur du format XPSXPS au format GDIGDI pour permettre aux applications Win32Win32 d'imprimer des documents XPSXPS.The XPSDrv model also provides a converter for XPSXPS to GDIGDI format so that Win32Win32 applications can print XPSXPS Documents. Pour WPFWPF applications, la conversion du XPSXPS à GDIGDI format est effectué automatiquement par le Write et WriteAsync méthodes de la XpsDocumentWriter chaque fois que la file d’attente d’impression cible de l’opération d’écriture n’a pas de classe un pilote XPSDrv.For WPFWPF applications, conversion of XPSXPS to GDIGDI 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. (Applications Windows Forms ne peuvent pas imprimer XPSXPS Documents.)(Windows Forms applications cannot print XPSXPS Documents.)

L'illustration suivante représente le sous-système d'impression et définit les parties fournies par MicrosoftMicrosoft et celles définies par les fournisseurs de matériel et de logiciels.The following illustration depicts the print subsystem and defines the portions provided by MicrosoftMicrosoft, and the portions defined by software and hardware vendors.

Système d’impression XPSThe XPS Print System

Impression XPS de baseBasic XPS Printing

WPFWPF définit une APIAPI de base et avancée. defines both a basic and advanced APIAPI. Pour les applications qui n'exigent pas une personnalisation étendue de l'impression ou un accès à l'ensemble complet de fonctionnalités XPSXPS, la prise en charge de l'impression de base est disponible.For those applications that do not require extensive print customization or access to the complete XPSXPS feature set, basic print support is available. La prise en charge de l'impression de base est exposé via un contrôle de boîte de dialogue d'impression qui nécessite une configuration minime et présente une Interface utilisateurUI familière.Basic print support is exposed through a print dialog control that requires minimal configuration and features a familiar Interface utilisateurUI. De nombreuses fonctionnalités XPSXPS sont disponibles en utilisant ce modèle d'impression simplifié.Many XPSXPS features are available using this simplified print model.

PrintDialogPrintDialog

Le contrôle System.Windows.Controls.PrintDialog offre un point d'entrée unique pour l'Interface utilisateurUI, la configuration et la soumission de travaux XPSXPS.The System.Windows.Controls.PrintDialog control provides a single entry point for Interface utilisateurUI, configuration, and XPSXPS job submission. Pour plus d'informations sur l'instanciation et l'utilisation du contrôle, consultez Appeler une boîte de dialogue d'impression.For information about how to instantiate and use the control, see Invoke a Print Dialog.

Impression XPS avancéeAdvanced XPS Printing

Pour accéder à l'ensemble complet de fonctionnalités XPSXPS, il convient d'utiliser l'APIAPI d'impression avancée.To access the complete set of XPSXPS features, the advanced print APIAPI must be used. Plusieurs APIAPI pertinentes sont décrites plus en détail ci-dessous.Several relevant APIAPI are described in greater detail below. Pour une liste complète des XPSXPS chemin d’impression APIAPIs, consultez le System.Windows.Xps et System.Printing références de l’espace de noms.For a complete list of XPSXPS print path APIAPIs, see the System.Windows.Xps and System.Printing namespace references.

PrintTicket et PrintCapabilitiesPrintTicket and PrintCapabilities

Le PrintTicket et PrintCapabilities classes constituent la base de l’avancée XPSXPS fonctionnalités.The PrintTicket and PrintCapabilities classes are the foundation of the advanced XPSXPS features. Ces deux types d'objets sont des structures XMLXML de fonctionnalités d'impression telles que le classement, l'impression recto verso, l'agrafage, etc. Ces structures sont définies par le schéma d'impression.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. PrintTicket indique à une imprimante comment traiter un travail d'impression.A PrintTicket instructs a printer how to process a print job. La classe PrintCapabilities définit les fonctionnalités d'une imprimante.The PrintCapabilities class defines the capabilities of a printer. En interrogeant les fonctionnalités d'une imprimante, un PrintTicket peut être créé pour tirer pleinement parti des fonctionnalités prises en charge de l'imprimante.By querying the capabilities of a printer, a PrintTicket can be created that takes full advantage of a printer's supported features. De la même manière, les fonctionnalités non prises en charge peuvent être évitées.Similarly, unsupported features can be avoided.

L'exemple suivant montre comment interroger l'élément PrintCapabilities d'une imprimante et créer un PrintTicket à l'aide de code.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 et PrintQueuePrintServer and PrintQueue

La classe PrintServer représente un serveur d'impression réseau et la classe PrintQueue représente une imprimante et la file d'attente des travaux de sortie qui lui est associée.The PrintServer class represents a network print server and the PrintQueue class represents a printer and the output job queue associated with it. Ensemble, ces APIAPIs permettent une gestion avancée des travaux d'impression d'un serveur.Together, these APIAPIs allow advanced management of a server's print jobs. Un PrintServer ou l'une de ses classes dérivées est utilisé pour gérer un PrintQueue.A PrintServer, or one of its derived classes, is used to manage a PrintQueue. La méthode AddJob est utilisée pour insérer un nouveau travail d'impression dans la file d'attente.The AddJob method is used to insert a new print job into the queue.

L'exemple suivant montre comment créer un LocalPrintServer et comment accéder au PrintQueue par défaut associé avec du code.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

Un XpsDocumentWriter, avec ses nombreuses méthodes Write et WriteAsync, permet d'écrire des documents XPSXPS dans un PrintQueue.An XpsDocumentWriter, with its many the Write and WriteAsync methods, is used to write XPSXPS documents to a PrintQueue. Par exemple, la méthode Write(FixedPage, PrintTicket) permet de sortir un document XPSXPS et un PrintTicket de manière synchrone.For example, the Write(FixedPage, PrintTicket) method is used to output an XPSXPS document and PrintTicket synchronously. La méthode WriteAsync(FixedDocument, PrintTicket) permet de sortir un document XPSXPS et un PrintTicket de manière asynchrone.The WriteAsync(FixedDocument, PrintTicket) method is used to output an XPSXPS document and PrintTicket asynchronously.

L'exemple suivant montre comment créer un XpsDocumentWriter avec du code.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()

Le méthodes AddJob permettent aussi d'imprimer.The AddJob methods also provide ways to print. Consultez Imprimer des fichiers XPS par programmation.See Programmatically Print XPS Files. pour plus d'informations.for details.

Chemin d'impression GDIGDI Print Path

Bien que WPFWPF applications prennent en charge en mode natif les XPSXPS chemin d’impression, Win32Win32 et Windows Forms applications peuvent également tirer parti de certaines XPSXPS fonctionnalités.While WPFWPF applications natively support the XPSXPS print path, Win32Win32 and Windows Forms applications can also take advantage of some XPSXPS features. Le pilote d'imprimante XPSXPS (XPSDrv) peut convertir une sortie GDIGDI au format XPSXPS.The XPSXPS printer driver (XPSDrv) can convert GDIGDI based output to XPSXPS format. Pour les scénarios avancés, la conversion personnalisée du contenu est pris en charge à l’aide de la Microsoft XPS Document Converter (MXDC).For advanced scenarios, custom conversion of content is supported using the Microsoft XPS Document Converter (MXDC). De même, WPFWPF applications peuvent également être exportés vers le GDIGDI chemin d’impression en appelant une de le Write ou WriteAsync méthodes de la XpsDocumentWriter classe et en désignant une imprimante non-XpsDrv comme la cible de file d’attente.Similarly, WPFWPF applications can also output to the GDIGDI 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.

Pour les applications qui n'exigent pas la fonctionnalité ou la prise en charge XPSXPS, le chemin d'impression GDIGDI actif reste inchangé.For applications that do not require XPSXPS functionality or support, the current GDIGDI print path remains unchanged.

Modèle de pilote XPSDrvXPSDrv Driver Model

Le chemin d'impression XPSXPS améliore l'efficacité du spouleur en utilisant XPSXPS comme format spool d'impression natif lors de l'impression vers une imprimante ou un pilote XPSXPS.The XPSXPS print path improves spooler efficiency by using XPSXPS as the native print spool format when printing to an XPSXPS -enabled printer or driver. Le processus de mise en file d'attente simplifié dispense de la nécessité de générer un fichier spool intermédiaire, tel qu'un fichier de données EMFEMF avant que le document soit mis en file d'attente.The simplified spooling process eliminates the need to generate an intermediate spool file, such as an EMFEMF data file, before the document is spooled. À la faveur de fichiers spool de plus petite taille, le chemin d'impression XPSXPS peut réduire le trafic réseau et améliorer les performances d'impression.Through smaller spool file sizes, the XPSXPS print path can reduce network traffic and improve print performance.

EMFEMF est un format fermé qui représente la sortie de l'application sous la forme d'une série d'appels dans GDIGDI pour le rendu des services. is a closed format that represents application output as a series of calls into GDIGDI for rendering services. Contrairement à EMFEMF, le format de fichier spool XPSXPS représente le document réel sans nécessiter d'interprétation supplémentaire lors de sortie vers un pilote d'imprimante XPSXPS (XPSDrv).Unlike EMFEMF, the XPSXPS spool format represents the actual document without requiring further interpretation when output to an XPSXPS-based printer driver (XPSDrv). Les pilotes peuvent fonctionner directement sur les données dans le format concerné.The drivers can operate directly on the data in the format. Ainsi, il n'est plus utile de procéder aux conversions de données et d'espaces de couleurs qu'impose l'utilisation des fichiers EMFEMF et des pilotes d'imprimante GDIGDI.This capability eliminates the data and color space conversions required when you use EMFEMF files and GDIGDI-based print drivers.

Les tailles de fichier de mise en attente sont généralement réduites quand vous utilisez des documents XPSXPS qui ciblent un pilote d'imprimante XPSXPS (XPSDrv) par rapport à leurs équivalents EMFEMF, mais il existe des exceptions :Spool file sizes are usually reduced when you use XPSXPS Documents that target an XPSXPS printer driver (XPSDrv) compared with their EMFEMF equivalents; however, there are exceptions:

  • Un graphique vectoriel très complexe, superposé en plusieurs couches ou mal écrit peut être plus grand qu'une version bitmap du même graphique.A vector graphic that is very complex, multi-layered, or inefficiently written can be larger than a bitmapped version of the same graphic.

  • À des fins d'affichage sur écran, les fichiers XPS incorporent des polices de périphérique, ainsi que des polices basées sur ordinateur, alors que les fichiers spool GDI n'incorporent pas de polices de périphérique.For screen display purposes, XPS files embed device fonts as well as computer-based fonts; whereas GDI spool files do not embed device fonts. Mais les deux types de polices sont des sous-ensembles (voir ci-dessous) et les pilotes d'imprimante peuvent supprimer les polices de périphérique avant de transmettre le fichier à l'imprimante.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 réduction de la taille des fichiers spool est exécutée via plusieurs mécanismes :Spool size reduction is performed through several mechanisms:

  • Création de sous-ensembles de polices :Font subsetting. seuls les caractères utilisés dans le document réel sont stockés dans le fichier XPSXPS.Only characters used within the actual document are stored in the XPSXPS file.

  • Prise en charge avancée des graphiques :Advanced Graphics Support. la prise en charge native des primitives de transparence et de dégradé évite la rastérisation du contenu dans le document XPSXPS.Native support for transparency and gradient primitives avoids rasterization of content in the XPSXPS Document.

  • Identification des ressources communes :Identification of common resources. les ressources utilisées plusieurs fois (comme une image qui représente un logo d'entreprise) sont traitées comme des ressources partagées et sont chargées une seule fois.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.

  • Compression ZIP :ZIP compression. tous les documents XPSXPS utilisent la compression ZIP.All XPSXPS documents use ZIP compression.

Voir aussiSee Also

PrintDialog
XpsDocumentWriter
XpsDocument
PrintTicket
PrintCapabilities
PrintServer
PrintQueue
Rubriques de guide pratiqueHow-to Topics
Documents dans WPFDocuments in WPF
XPSXPS
Sérialisation et stockage de documentsDocument Serialization and Storage
Microsoft XPS Document Converter (MXDC)Microsoft XPS Document Converter (MXDC)