WritePrinter, fonction

La fonction WritePrinter avertit le spouleur d’impression que les données doivent être écrites sur l’imprimante spécifiée.

Notes

WritePrinter prend uniquement en charge l’impression GDI et ne doit pas être utilisé pour l’impression XPS. Si votre travail d’impression utilise le chemin d’impression XPS ou OpenXPS, utilisez l’API d’impression XPS. L’envoi de travaux d’impression XPS ou OpenXPS au spouleur à l’aide de WritePrinter n’est pas pris en charge et peut entraîner des résultats indéterminés.

Syntaxe

BOOL WritePrinter(
  _In_  HANDLE  hPrinter,
  _In_  LPVOID  pBuf,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcWritten
);

Paramètres

hPrinter [in]

Handle de l’imprimante. Utilisez la fonction OpenPrinter ou AddPrinter pour récupérer un handle d’imprimante.

pBuf [in]

Pointeur vers un tableau d’octets qui contient les données qui doivent être écrites dans l’imprimante.

cbBuf [in]

Taille, en octets, du tableau.

pcWritten [out]

Pointeur vers une valeur qui reçoit le nombre d’octets de données écrites sur l’imprimante.

Valeur retournée

Si la fonction réussit, la valeur de retour est une valeur différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro.

Notes

Notes

Il s’agit d’une fonction bloquante ou synchrone qui peut ne pas être retournée immédiatement. La rapidité avec laquelle cette fonction retourne dépend de facteurs d’exécution tels que l’status réseau, la configuration du serveur d’impression et les facteurs d’implémentation du pilote d’imprimante qui sont difficiles à prédire lors de l’écriture d’une application. L’appel de cette fonction à partir d’un thread qui gère l’interaction avec l’interface utilisateur peut donner l’impression que l’application ne répond pas.

La séquence d’un travail d’impression est la suivante :

  1. Pour commencer un travail d’impression, appelez StartDocPrinter.
  2. Pour commencer chaque page, appelez StartPagePrinter.
  3. Pour écrire des données dans une page, appelez WritePrinter.
  4. Pour terminer chaque page, appelez EndPagePrinter.
  5. Répétez 2, 3 et 4 pour autant de pages que nécessaire.
  6. Pour mettre fin au travail d’impression, appelez EndDocPrinter.

Lorsqu’un document de haut niveau (tel qu’un fichier Adobe PDF ou Microsoft Word) ou d’autres données d’imprimante (telles que PCL, PS ou HPGL) sont envoyés directement à une imprimante, les paramètres d’impression définis dans le document sont supérieurs aux paramètres d’impression windows. La sortie des documents lorsque la valeur du membre pDatatype de la structure DOC_INFO_1 qui a été passée dans le paramètre pDocInfo de l’appel StartDocPrinter est « RAW » doit décrire entièrement les paramètres de travail d’impression de style DEVMODE dans la langue comprise par le matériel.

Dans les versions de Windows antérieures à Windows XP, lorsqu’une page dans un fichier mis en pool dépasse environ 350 Mo, l’impression peut échouer et ne pas envoyer de message d’erreur. Par exemple, cela peut se produire lors de l’impression de fichiers EMF volumineux. La limite de taille de page dans les versions de Windows antérieures à Windows XP dépend de nombreux facteurs, notamment la quantité de mémoire virtuelle disponible, la quantité de mémoire allouée par l’appel de processus et la quantité de fragmentation dans le tas de processus. Dans Windows XP et les versions ultérieures de Windows, les fichiers EMF doivent avoir une taille inférieure ou inférieure à 2 Go. Si WritePrinter est utilisé pour écrire des données non EMF, telles que pdl prêt pour l’imprimante, la taille du fichier est limitée uniquement par l’espace disque disponible.

Exemples

Pour obtenir un exemple de programme qui utilise cette fonction, consultez Guide pratique pour imprimer à l’aide de l’API d’impression GDI.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête
Winspool.h (inclure Windows.h)
Bibliothèque
Winspool.lib
DLL
Spoolss.dll

Voir aussi

Impression

Fonctions API du spouleur d’impression

EndDocPrinter

EndPagePrinter

OpenPrinter

StartDocPrinter

StartPagePrinter

WritePrinter