[Tuto] AutoIt et les impressions.

Espace contenant des tutoriels divers concernant AutoIt.
Règles du forum
.

Tutoriel "La programmation avec Autoit" : https://openclassrooms.com/fr/courses/1 ... vec-autoit
Répondre
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11325
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

[Tuto] AutoIt et les impressions.

#1

Message par Tlem » sam. 27 févr. 2010 14:34

AutoIt n'a pratiquement aucune commande interne pour l'impression en dehors de _FilePrint() pour les documents .txt (texte simple) et _WordDocPrint() pour les documents Word.

Suite à plusieurs demandes concernant l'impression avec AutoIt, voici d'autres possibilités qui en intéresserons surement plus d'un ...
  • Bloc notes
    - Imprimer un document texte avec le Bloc-notes sur l'imprimante par défaut (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\test.txt"
    Run(@SystemDir & '\notepad.exe /p "' & $PFile & '"' ,'' ,@SW_HIDE)
    - Imprimer un document avec le Bloc-notes sur l'imprimante de votre choix (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\test.txt"
    $Printer = "HP Photosmart 3300 series"
    Run(@SystemDir & '\notepad.exe /pt "' & $PFile & '" "' & $Printer & '"' ,'' ,@SW_HIDE)
    - Il est aussi possible de spécifier le nom du pilote ainsi que le port comme ceci :

    Code : Tout sélectionner

    notepad.exe /pt TextFileName PrinterName [ DriverName [ PortName ] ]
    Ce qui nous donne :

    Code : Tout sélectionner

    $PFile = "C:\test.txt"
    $Printer = "HP LaserJet 1100 (MS)"
    $Driver = "HP LaserJet 1100 (MS)"
    $Port = "IP_192.168.1.10" ; ou $Port = "\\ServeurImpression\usbprinter"
    Run(@SystemDir & '\notepad.exe /pt "' & $PFile & '" "' & $Printer & '" "' & $Driver & '" "' & $Port & '"' ,'' ,@SW_HIDE)
  • WordPad
    - Imprimer un document txt, rtf, doc, wri avec le Wordpad sur l'imprimante par défaut (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\test.txt"
    Run(@SystemDir & '\write.exe /p "' & $PFile & '"' ,'' ,@SW_HIDE)
    - Imprimer un document txt, rtf, doc, wri avec le Wordpad sur l'imprimante de votre choix (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\test.txt"
    $Printer = "HP Photosmart 3300 series"
    Run(@SystemDir & '\write.exe /pt "' & $PFile & '" "' & $Printer & '"' ,'' ,@SW_HIDE)
    - Il est aussi possible de spécifier le nom du pilote ainsi que le port comme ceci :

    Code : Tout sélectionner

    write.exe /pt TextFileName PrinterName [ DriverName [ PortName ] ]
  • Word
    - Vous pouvez aussi utiliser Word, mais dans ce cas, vous devrez d'abord importer une macro (à faire une seule fois).
    Créez cette macro :

    Code : Tout sélectionner

    Sub PrintDefault()
    '
    ' PrintDefault Macro
    ' Print current document to Default Printer
    '
        ActiveDocument.PrintOut
        ActiveDocument.Close
        Application.Quit
    End Sub
    et enregistrez là sous "PrintDefault" dans normal.dot.
    - Vous pouvez aussi créer le fichier PrintDefault.bas et l'importer dans le normal.dot.
    ► Afficher le texte
    Une fois la macro crée et importée, utilisez :

    Code : Tout sélectionner

    $PFile = "C:\test.doc"
    Run(@ProgramFilesDir & '\Microsoft Office\Office\winword.exe "' & $PFile & '"  /mPrintDefault /q /n' ,'' ,@SW_HIDE)
    En adaptant la macro, vous pourrez spécifier l'imprimante de destination.
    Je pense qu'il doit être possible avec AutoIt d'intégrer directement les macro sans passer par l'ouverture de Word, mais je vous laisse chercher cette partie. ;)
  • Open Office (pensez à bien contrôler le chemin de l'application) :
    - Imprimer un document avec Open Office sur l'imprimante par défaut (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\test.odt"
    Run(@ProgramFilesDir & '\OpenOffice.org 3\program\soffice.exe -p "' & $PFile & '"' ,'' ,@SW_HIDE)
    - Imprimer des documents .odt avec Open Office sur l'imprimante par défaut (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\*.odt"
    Run(@ProgramFilesDir & '\OpenOffice.org 3\program\soffice.exe -p "' & $PFile & '"' ,'' ,@SW_HIDE)
    - Imprimer un/des documents avec Open Office sur l'imprimante de votre choix (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\test.odt"
    $Printer = "HP Photosmart 3300 series"
    Run(@ProgramFilesDir & '\OpenOffice.org 3\program\soffice.exe -pt "' & $Printer & '" "' & $PFile & '"' ,'' ,@SW_HIDE)
  • Adobe Accrobat (pensez à bien contrôler le chemin de l'application) :
    - Imprimer un document avec Adobe Accrobat sur l'imprimante par défaut avec boite de dialogue d'impression :

    Code : Tout sélectionner

    $PFile = "C:\test.pdf"
    Run(@ProgramFilesDir & '\Adobe\Reader 9.0\Reader\AcroRd32.exe /p "' & $PFile & '"' ,'' ,@SW_HIDE)
    - Imprimer un document avec Adobe Accrobat sur l'imprimante de votre choix silencieusement :

    Code : Tout sélectionner

    $PFile = "C:\test.pdf"
    $Printer = "HP Photosmart 3300 series"
    Run(@ProgramFilesDir & '\Adobe\Reader 9.0\Reader\AcroRd32.exe /N /T "' & $PFile & '" "' & $Printer & '"' ,'' ,@SW_HIDE)
    - Il est aussi possible de spécifier le nom du pilote ainsi que le port comme ceci :

    Code : Tout sélectionner

    AcroRd32.exe /N /T PdfFile PrinterName [ PrinterDriver [ PrinterPort ] ]
  • Foxit Reader (pensez à bien contrôler le chemin de l'application) :
    - Imprimer un document avec Foxit Reader sur l'imprimante par défaut (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\test.pdf"
    Run(@ProgramFilesDir & '\Foxit Software\Foxit Reader\Foxit Reader.exe /p "' & $PFile & '"' ,'' ,@SW_HIDE)
    - Imprimer un document avec Foxit Reader sur l'imprimante de votre choix (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\test.pdf"
    $Printer = "HP Photosmart 3300 series"
    Run(@ProgramFilesDir & '\Foxit Software\Foxit Reader\Foxit Reader.exe /t "' & $PFile & '" "' & $Printer & '"' ,'' ,@SW_HIDE)
    - Selon le manuel de Foxit Reader il est conseillé pour la version 3.0 de placer les commutateurs /p et /t avant le nom du fichier.

    Si vous avez des images à imprimer alors voici quelques exemples :
  • Paint
    - Imprimer une image avec paint sur l'imprimante par défaut (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\test.bmp"
    Run(@SystemDir & '\mspaint.exe /p "' & $PFile & '"' ,'' ,@SW_HIDE)
    - Imprimer une image avec paint sur l'imprimante de votre choix (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\test.bmp"
    $Printer = "HP Photosmart 3300 series"
    Run(@SystemDir '\mspaint.exe /pt "' & $PFile & '" "' & $Printer & '"' ,'' ,@SW_HIDE)
    - Il est aussi possible de spécifier le nom du pilote ainsi que le port comme ceci :

    Code : Tout sélectionner

    mspaint.exe /pt ImageFileName PrinterName [ DriverName [ PortName ] ]
  • IrFanView
    - Imprimer n'importe quelle image avec IrfanView sur l'imprimante par défaut (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\test.bmp"
    Run(@ProgramFilesDir & '\irfanview\i_view32.exe "' & $PFile & '" /print' ,'' ,@SW_HIDE)
    - Imprimer n'importe quelle image avec IrfanView sur l'imprimante de votre choix (silencieusement) :

    Code : Tout sélectionner

    $PFile = "C:\test.bmp"
    $Printer = "HP Photosmart 3300 series"
    Run(@ProgramFilesDir & '\irfanview\i_view32.exe "' & $PFile & '" /print="' & $Printer & '"' ,'' ,@SW_HIDE)
  • Microsoft RAW Image
    Dans le cas ou vous auriez des images spécifiques à imprimer, vous pouvez aussi utiliser l'utilitaire de Microsoft : Microsoft RAW Image Thumbnailer and Viewer for Windows.
    La ligne de commande est identique à celle de IrFanView, donc il vous suffit d'adapter le chemin au code précédent. ;)

    Code : Tout sélectionner

    RAWSupport.exe /print RawImageFile
  • Microsoft XPS Viewer
    Pour ceux que cela peut intérésser, vous avez aussi Microsoft XPS Viewer :

    Code : Tout sélectionner

    XpsRchVw.exe XpsFile /p
Bien, maintenant que nous pouvons imprimer tout un tas de choses, vous allez me dire : 'Mais comment récupérer la liste de mes imprimantes ainsi que les informations sur les drivers et ports ...'
Et bien tout simplement avec ceci :

Code : Tout sélectionner

#include <array.au3> ; Only for viewing the array.

$aPrinterList = _GetLocalPrinterList()
_ArrayDisplay($aPrinterList, '')

; Return local printer list.
; column 1 = Printer Name
; column 2 = Driver
; column 3 = Port
Func _GetLocalPrinterList()
    Local $PrinterList[1][3], $PrinterCount
    Local $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\CIMV2")
    Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Printer")

    For $objItem In $colItems
        ReDim $PrinterList[$PrinterCount + 1][3]
        $PrinterList[$PrinterCount][0] = $objItem.DeviceID
        $PrinterList[$PrinterCount][1] = $objItem.DriverName
        $PrinterList[$PrinterCount][2] = $objItem.PortName
        $PrinterCount += 1
    Next
    Return $PrinterList
EndFunc   ;==>_GetLocalPrinterList
Bon, évidement seul la fonction vous sera utile, mais j'ai préféré vous donner un exemple concret. ;)

J'ai sans aucun doute oublié d'autres programmes commun (dont surement celui que vous voulez :lol: ), mais ce qui est écrit précédemment doit vous aider dans l'adaptation de votre/vos besoin(s).

Donc bon code à tous et amusez vous bien. :D

Avatar du membre
jbnh
Modérateur
Modérateur
Messages : 1932
Enregistré le : ven. 02 mai 2008 13:54
Localisation : Bruxelles
Contact :
Status : Hors ligne

Re: AutoIt et les impressions.

#2

Message par jbnh » sam. 27 févr. 2010 17:46

Honnêtement je pense que tu as fait le tour des programmes principaux. Merci beaucoup en tout cas pour ce partage :)
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci

Avatar du membre
timmalos
Modérateur
Modérateur
Messages : 1970
Enregistré le : dim. 18 mai 2008 14:16
Contact :
Status : Hors ligne

Re: AutoIt et les impressions.

#3

Message par timmalos » dim. 28 févr. 2010 01:14

Thx a lot for this :wink:

Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 12:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: AutoIt et les impressions.

#4

Message par Habibsbib » dim. 28 févr. 2010 16:22

Merci beaucoup.

Je note juste un oubli de la balise [Tuto], mais autrement merci beaucoup.

Et au fait, la fonction ShellExecute n'en ferait-elle pas autant avec le flag verb "print" ?

Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11325
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Tuto] AutoIt et les impressions.

#5

Message par Tlem » dim. 28 févr. 2010 21:19

Bien vu pour la balise (c'est corrigé). J'ai passé trop de temps dessus et comme je devais partir en famille, je l'ai mis en ligne un peut rapidement ... :oops:

En ce qui concerne ShellExecute et le flag verb "print", cela ne fonctionne pas pour tout les softs. Donc tant qu'à faire un tuto, autant qu'il soit 'uniforme' tout le long. ;)
Si on ne précise pas le flag, alors cela fonctionne (pour certains), le problème c'est le showflag, car pour le spécifier, il faut mettre quelque chose sur le flag verb ...
J'ai essayé : -1, Default, et les différents choix, et à chaque fois le même message d'erreur. Donc je suis passé par le Run() qui lui ne pause aucun problème. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".

OmegAMRS
Niveau 4
Niveau 4
Messages : 54
Enregistré le : mar. 15 sept. 2009 08:37
Status : Hors ligne

Re: [Tuto] AutoIt et les impressions.

#6

Message par OmegAMRS » ven. 02 juil. 2010 15:30

merci c'est niquel :)

a+

OmegA

Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1753
Enregistré le : mar. 22 juil. 2008 20:55
Localisation : Nantes
Status : Hors ligne

Re: [Tuto] AutoIt et les impressions.

#7

Message par TommyDDR » mar. 07 sept. 2010 19:26

Merci pour ce tuto.

Juste un oubli de frappe :

dans la rubrique Paint :
Run(@SystemDir '\mspaint.exe /pt "' & $PFile & '" "' & $Printer & '"' ,'' ,@SW_HIDE)

et manque un & entre @SystemDir et '\mspaint.exe
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11325
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Tuto] AutoIt et les impressions.

#8

Message par Tlem » mar. 07 sept. 2010 19:55

Corrigé.
Merci.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".

albu68
Niveau 2
Niveau 2
Messages : 19
Enregistré le : ven. 04 févr. 2011 15:51
Status : Hors ligne

Re: [Tuto] AutoIt et les impressions.

#9

Message par albu68 » mar. 22 mars 2011 16:33

Merci :D

Répondre