Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Vue d'ensemble de l'impression

Grâce à Microsoft .NET Framework, les développeurs d'applications utilisant Windows Presentation Foundation (WPF) disposent d'un nouvel ensemble riche d'API pour l'impression et la gestion du système d'impression. Avec Windows Vista, certaines de ces améliorations du système d'impression sont également disponibles pour les développeurs qui créent des applications Windows Forms et à ceux utilisant du code non managé. Le nouveau format de fichier XML Paper Specification (XPS) et le chemin d'accès d'impression XPS sont au cœur de cette nouvelle fonctionnalité.

Cette rubrique contient les sections suivantes.

XPS est un format de document électronique, un format de fichier de mise en attente et un langage de description de page. Il s'agit d'un format de document ouvert qui utilise XML, OPC (Open Packaging Conventions) et d'autres normes du secteur pour créer des documents multiplateformes. XPS simplifie le processus grâce auquel les documents numériques sont créés, partagés, imprimés, affichés et archivés. Pour plus d'informations sur XPS, consultez le site Web XPS (en anglais).

Plusieurs techniques pour imprimer du contenu basé sur XPS à l'aide de WPF sont illustrées dans l'exemple Comment : imprimer des fichiers XPS par programmation. Vous trouverez des informations utiles sur ces exemples pendant l'examen du contenu de cette rubrique (les développeurs de code non managé doivent consulter l'aide de la fonction Microsoft XPS Document Converter printer escape. Les développeurs Windows Forms doivent utiliser l'API de l'espace de noms System.Drawing.Printing qui ne prend pas en charge le chemin d'impression XPS complet, mais prennent en charge un chemin d'impression GDI-à-XPS hybride. Consultez Architecture du chemin d'accès d'impression ci-dessous.)

Le chemin d'accès d'impression XML Paper Specification (XPS) est une nouvelle fonctionnalité Windows qui redéfinit la façon dont l'impression est gérée dans les applications Windows. Étant donné que XPS peut remplacer un langage de présentation du document (tel que RTF), un format de spouleur d'impression (tel que WMF) et un langage de description de page (tel que PCL ou PostScript), le nouveau chemin d'accès d'impression conserve le format XPS depuis la publication de l'application jusqu'au traitement final dans le pilote d'impression ou le périphérique.

Le chemin d'accès d'impression XPS s'appuie sur le modèle de pilote d'imprimante XPS (XPSDrv), qui apporte plusieurs avantages pour les développeurs tels que l'impression WYSIWYG ("What You See Is What You Get, "tel écrit, tel écran"), une meilleure prise en charge de la couleur et une performance d'impression considérablement améliorée. (Pour plus d'informations sur XPSDrv, consultez le Kit de développement des pilotes Windows (en anglais).)

Le fonctionnement du spouleur d'impression pour les documents XPS est identique pour l'essentiel, à celui des versions antérieures de Windows. Toutefois, il a été amélioré pour prendre en charge le chemin d'accès d'impression XPS en plus de chemin d'accès d'impression GDI existant. Le nouveau chemin d'accès d'impression utilise un fichier en attente XPS en mode natif. Bien que les pilotes d'imprimante en mode utilisateur écrits pour les versions antérieures de Windows continueront de fonctionner, un pilote d'imprimante XPS (XPSDrv) est requis pour pouvoir utiliser le chemin d'accès d'impression XPS.

Les avantages du chemin d'accès d'impression XPS sont significatifs et incluent :

  • La prise en charge de l'impression WYSIWYG.

  • La prise en charge native de profils de couleurs avancés, qui incluent 32 bits par canal (bpc), CMJN, les couleurs nommées, des encres n et une prise en charge native de la transparence et des dégradés.

  • Une performance d'impression améliorée pour les applications .NET Framework et Win32.

  • Un format XPS aux normes de l'industrie.

Pour les scénarios d'impression de base, une API simple et intuitive est disponible avec un point d'entrée unique pour l'interface utilisateur, la configuration et la soumission de travaux. Pour les scénarios avancés, une prise en charge supplémentaire est fournie pour la personnalisation de l'interface utilisateur (UI) (ou pas d'interface utilisateur du tout), les fonctions d'impression synchrone et asynchrone de même que les fonctions d'impression par lots. Les deux options fournissent une prise en charge de l'impression en mode confiance totale ou partielle.

XPS a été conçu pour davantage d'extensibilité. En utilisant l'infrastructure d'extensibilité, des fonctionnalités et des fonctions peuvent être ajoutées à XPS de façon modulaire. Les fonctionnalités d'extensibilité sont les suivantes :

  • Schéma d'impression. Le schéma public est mis à jour régulièrement et permet l'extension rapide des fonctionnalités des périphériques. (Consultez PrintTicket et PrintCapabilities ci-dessous.)

  • Pipeline des filtres extensible. Le pipeline des filtres du pilote d'imprimante XPS (XPSDrv) a été conçu pour permettre l'impression directe et évolutive de documents XPS. (Recherchez « XPSDrv » dans le Kit de développement des pilotes Windows (en anglais).)

ms742418.collapse_all(fr-fr,VS.110).gifArchitecture du chemin d'accès d'impression

Bien que les applications Win32 et .NET Framework prennent en charge XPS, les applications Win32 et Windows Forms utilisent un GDI à la conversion XPS pour créer du contenu au format XPS pour le pilote d'imprimante XPS (XPSDrv). Ces applications ne sont pas requises pour utiliser le chemin d'accès d'impression XPS et peuvent continuer à utiliser l'impression via métafichier amélioré (EMF). Toutefois, la plupart des fonctionnalités et améliorations de XPS sont disponibles uniquement pour les applications qui ciblent le chemin d'accès d'impression de XPS.

Pour activer l'utilisation des imprimantes XPSDrv pour les applications Win32 et Windows Forms, le pilote d'imprimante XPS (XPSDrv) prend en charge la conversion du format GDI au format XPS. Le modèle XPSDrv fournit également un convertisseur pour passer du format XPS au format GDI, de façon à ce que les applications Win32 puissent imprimer des documents XPS. Pour les applications WPF, la conversion de XPS au format GDI s'effectue automatiquement par les méthodes Write et WriteAsync de la classe XpsDocumentWriter chaque fois que la file d'attente à l'impression cible de l'opération d'écriture est dépourvue de pilote XPSDrv (les applications Windows Forms ne peuvent pas imprimer des documents XPS).

L'illustration suivante représente le sous-système d'impression et définit les parties fournies par Microsoft et celles définies par les fournisseurs de matériel et de logiciels.

Système d'impression XPS

ms742418.collapse_all(fr-fr,VS.110).gifImpression XPS de base

WPF définit à la fois une API de base et avancée. Pour les applications qui ne requièrent pas de personnalisation étendue de l'impression ou d'accès au jeu de fonctionnalité XPS complet, la prise en charge de l'impression de base est disponible. La prise en charge de l'impression de base est exposée via un contrôle de la boîte de dialogue d'impression qui requiert une configuration minime et présente une interface utilisateur familière. De nombreuses fonctionnalités XPS sont disponibles en utilisant ce modèle d'impression simplifié.

ms742418.collapse_all(fr-fr,VS.110).gifPrintDialog

Le contrôle System.Windows.Controls.PrintDialog fournit un point d'entrée unique pour l'interface utilisateur, la configuration et la soumission de travaux XPS. Pour plus d'informations sur l'instanciation et l'utilisation du contrôle, consultez Comment : appeler une boîte de dialogue Imprimer.

ms742418.collapse_all(fr-fr,VS.110).gifImpression XPS avancée

Pour accéder au jeu complet de fonctionnalités XPS, l'API de l'impression avancée doit être utilisée. Plusieurs API pertinentes sont décrites plus en détail ci-dessous. Pour obtenir une liste complète des API du chemin d'accès d'impression XPS, consultez les références d'espaces de noms System.Windows.Xps et System.Printing.

ms742418.collapse_all(fr-fr,VS.110).gifPrintTicket et PrintCapabilities

Les classes PrintTicket et PrintCapabilities constituent la fondation des fonctionnalités XPS avancées. Ces deux types d'objets sont des structures XML mises en forme 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. PrintTicket indique à une imprimante comment traiter un travail d'impression. La classe PrintCapabilities définit les fonctionnalités d'une imprimante. En interrogeant les fonctionnalités d'une imprimante, un PrintTicket peut être créé pour tirer pleinement parti des fonctions prises en charge par une imprimante. De même, des fonctionnalités non prises en charge peuvent être évitées.

L'exemple suivant montre comment interroger les PrintCapabilities d'une imprimante et créer un PrintTicket à l'aide de code.


// ---------------------- 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(fr-fr,VS.110).gifPrintServer et PrintQueue

La classe PrintServer représente un serveur d'impression de réseau et la classe PrintQueue représente une imprimante et la file d'attente des travaux de sortie qui lui est associée. Ensemble, ces API permettent la gestion avancée des travaux d'impression d'un serveur. Un PrintServer ou l'une de ses classes dérivées est utilisé pour gérer un PrintQueue. La méthode AddJob est utilisée pour insérer un nouveau travail d'impression dans la file d'attente.

L'exemple suivant montre comment créer un LocalPrintServer et accéder à sa PrintQueue par défaut à l'aide du 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()


ms742418.collapse_all(fr-fr,VS.110).gifXpsDocumentWriter

Un XpsDocumentWriter, avec ses nombreuses méthodes Write et WriteAsync est utilisé pour écrire des documents XPS dans une PrintQueue. Par exemple, la méthode Write(FixedPage, PrintTicket) est utilisée de façon synchrone pour sortir un document XPS et un PrintTicket. La méthode WriteAsync(FixedDocument, PrintTicket) est utilisée de façon asynchrone pour sortir un document XPS et un PrintTicket.

L'exemple suivant montre comment créer un XpsDocumentWriter à l'aide de 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()


Les méthodes AddJob vous permettent également d'imprimer. Consultez Comment : imprimer des fichiers XPS par programmation. pour plus d'informations.

Bien que les applications WPF prennent en charge en mode natif le chemin d'accès d'impression XPS, les applications Win32 et Windows Forms peuvent également tirer parti de quelques fonctionnalités de XPS. Le pilote d'imprimante XPS (XPSDrv) peut convertir la sortie GDI au format XPS. Pour les scénarios avancés, la conversion personnalisée du contenu est prise en charge à l'aide de Microsoft XPS Document Converter printer escape. De même, les applications WPF peuvent aussi sortir vers le chemin d'accès d'impression GDI en appelant l'une des méthodes Write ou WriteAsync de la classe XpsDocumentWriter et en désignant une imprimante qui n'est pas une imprimante XpsDrv comme file d'attente à l'impression cible.

Pour les applications qui ne requièrent pas de fonctionnalités ou de prise en charge XPS, le chemin d'accès d'impression GDI actuel reste inchangé.

Le chemin d'accès d'impression XPS améliore l'efficacité du spouleur en utilisant XPS comme format de spoule d'impression natif lors de l'impression vers une imprimante ou un pilote compatible XPS. Le processus de mise en file d'attente simplifié élimine le besoin de générer un fichier d'attente intermédiaire, tel qu'un fichier de données EMF avant que le document ne soit mis en file d'attente. Grâce à des tailles de fichier en attente plus petites, le chemin d'accès d'impression XPS peut réduire le trafic réseau et améliorer la performance d'impression.

EMF est un format fermé qui représente la sortie d'application comme une série d'appels dans GDI pour le rendu des services. Contrairement à EMF, le format de spoule XPS représente le document réel sans nécessiter d'interprétation supplémentaire lors de la sortie vers un pilote d'imprimante au format XPS (XPSDrv). Les pilotes peuvent fonctionner directement sur les données au format concerné. Cette fonction élimine les données et les conversions d'espaces de couleurs requises lorsque vous utilisez des fichiers EMF et des pilotes d'imprimante au format GDI.

Les tailles du fichier en attente sont réduites en général lorsque vous utilisez des documents XPS qui ciblent un pilote d'imprimante XPS (XPSDrv) par rapport à leurs équivalents EMF ; mais il existe des exceptions :

  • Un graphique vectoriel qui est très complexe, superposé en plusieurs couches ou écrit d'une façon inefficace peut être plus grand qu'une version bitmap du même graphique.

  • À 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 GDI mis en attente n'incorporent pas de polices de périphérique. 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.

La réduction de la taille des fichiers mis en attente est exécutée via plusieurs mécanismes :

  • Création d'un sous-ensemble de police. Seuls les caractères utilisés à l'intérieur du document réel sont stockés dans le fichier XPS.

  • Prise en charge avancée des graphiques. La prise en charge native des primitives de la transparence et du dégradé évitent la rastérisation du contenu dans le document XPS.

  • Identification des ressources communes. 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.

  • Compression ZIP. Tous les documents XPS utilisent la compression ZIP.

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft