Piloter votre imprimante sous Windows et Mac OS X avec 4D 2004

Aziz ELGHOMARI

- Titre : Piloter votre imprimante sous Windows et Mac OS X avec 4D 2004

- Auteur : Aziz ELGHOMARI

- Parution : 1 septembre 2005

- Licence : Ce document est issu de https://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.

Sommaire

- I. Introduction ♪

- II. Utilisation des commandes du Plug-in (sous Windows)

- GetPrinterList

- DefaultPrinter

- Setprinter

- Spécificités Windows 2000 et supérieur

- III. Utilisation d’AppleScript pour Mac Os X

- IV. Base exemple

- Partie MacOS

- Partie Windows

- V. Conclusion

- VI. Bases exemples

I - Introduction ♪

À partir de 4D 2003, de nouvelles commandes 4D (lire imprimante courante, FIXER IMPRIMANTE COURANTE, LISTE IMPRIMANTES) permettent de désigner l'imprimante à utiliser pour les impressions avec l'application 4D courante (pour les imprimantes réseaux et local) sans modifier l'imprimante par défaut.

La méthode proposée par cette note technique (sous forme de Plug-in pour Windows et AppleScript pour Macintosh) modifie directement l'imprimante définie par défaut et de ce fait toutes les applications (plug-ins compris bien sûr) peuvent bénéficier du changement d'imprimante à la volée.

II - Utilisation des commandes du Plug-in (sous Windows)

Les fonctions du Plug-in PiloterImprimante sont les suivantes :

GetPrinterList

MyErr:=GetPrinterList(Liste_Imprimante)

Paramètre

Type

Description

Liste_Imprimante

Tableau Alpha

<- Liste des imprimantes retournées

MyErr

Entier

<- Code d’erreur retourné

Nous récupérons dans le tableau alphanumérique la liste des imprimantes (locales et réseau) disponibles dans la machine.

Note : le code d'erreur retourne 0, si tout va bien et 1 s'il y a un problème.

TABLEAU ALPHA(60;Liste_imprimante;10)

C_ALPHA(80;Nom_tab)
C_ENTIER(MyErr)

MyErr:=GetPrinterList (Liste_imprimante)

DefaultPrinter

MyErr:=DefaultPrinter (imprimante_par_defaut)

Paramètre

Type

Description

Imprimante par défaut

Tableau Alpha

<- Nom de l’imprimante par défaut

MyErr

Entier

<- Code d’erreur retourné

C_ENTIER LONG(MyErr)

C_ALPHA(80;imprimante_par_defaut)

MyErr:=DefaultPrinter (imprimante_par_defaut)

Setprinter

MyErr:=SelectPrinter (imprimante_a_definir)

Paramètre

Type

Description

Imprimante à définir

Chaîne

<- Nom de l’imprimante par défaut

MyErr

Entier

<- Code d’erreur retourné

C_ENTIER LONG(MyErr)

C_ALPHA(80;imprimante_a_definir)
imprimante_a_definir="\\DC-1\Laser HP Support"

MyErr4:=SelectPrinter (imprimante_a_definir)

Nous passons dans le paramètre de type chaîne, le nom de l'imprimante que nous voulons définir par défaut.

Spécificités Windows 2000 et supérieur

SelectPrinter

Pour définir l'imprimante définie par défaut, il faut utiliser la commande GetDefaultPrinter.

ListPrinter

Pour récupérer la liste des imprimantes, il faut utiliser la commande EnumPrinters et lui passer le paramètre PRINTER_ENUM_LOCAL pour les imprimantes locales et PRINTER_ENUM_CONNECTIONS pour les imprimantes réseau.

Defaultprinter

Pour récupérer l'imprimante par défaut, il faut utiliser la commande SetDefaultPrinter.

III - Utilisation d’AppleScript pour Mac Os X

Pour MacOs X nous allons exécuter l'Applescript qui va nous permettre de modifier à la volée l'imprimante définie par défaut.

Contenu de l'AppleScript

tell application "Printer Setup Utility"
set dialogsentence to "" -- item 1 of param1 as text
set prntlist to {} as list

repeat with i from 1 to the (count of printer)
set pname to name of printer i
set the end of prntlist to pname
end repeat

set the dialog_result to choose from list prntlist with prompt dialogsentence --"Choisissez la nouvelle imprimante"
if result is not {} and result is not equal to false then
set newprinter to the result as text

set current printer to printer newprinter
quit
end if

end tell

et pour l'exécuter nous allons utiliser la nouvelle commande 4D 2004 : LANCER PROCESS EXTERNE

Exemple

LANCER PROCESS EXTERNE ("osascript \""+$CheminApplescript+"\"";$in;$out;$error)

IV - Base exemple

Partie MacOS

Lorsque vous cliquez sur l'item «Démonstration» du menu Fichier, l'écran suivant apparaît

Dans la liste déroulante à droite s'inscrit la liste des imprimantes, la partie « Imprimante par défaut », nous récupérons l'imprimante par défaut :

Le bouton « Définir comme défaut » permet d'exécuter l'AppleScript et d'avoir le dialogue de modification de l'imprimante par défaut :

Le bouton « Driver Par Défaut » dans la partie «Test Impression» affiche le format d'impression.

Partie Windows

Lorsque vous cliquez sur l'item Demonstration du menu Fichier, l'écran suivant apparaît :

Le test se décompose en trois phases :

- liste des drivers : en cliquant sur le bouton « Remplir la liste », la liste des imprimantes s'affiche.

- imprimante par défaut : après avoir sélectionné une imprimante par défaut dans la liste des drivers, cela vous affiche le nom de l'imprimante qui a été sélectionnée par défaut.

- tester l'impression : vous renvoie la fenêtre d'impression. Depuis celle-ci, vous pouvez définir votre format d'impression.

V - Conclusion

La note technique va permettre de modifier à la volée l'imprimante définie par défaut au niveau de la machine sous Windows et sous Macintosh, et toutes les applications (les Plug-ins 4D compris) pourront bénéficier du changement d'imprimante.

Le plug-in pour Windows et l'applescript pour 4D peuvent être utilisés directement dans vos codes, le code source livré peut être amélioré ou intégré à d'autres développements.

VI - Bases exemples

Téléchargez les bases exemples : base exemple Mac

base exemple Windows