Page 1 sur 1

[EX] Word --> PDF

Posté : lun. 18 juil. 2016 10:46
par LavaPower
Bonjour !

Voici mon premier programme AutoIt : Word --> PDF

A quoi sert-il ?
Il sert à convertir un fichier .doc ou .docx en fichier .pdf

Comment l'utiliser ?
Il vous suffit de mettre un dossier où sont les fichiers word dans le premier input puis de rafraichir la liste des fichiers. Enfin, définir un fichier de destination et un nom pour le pdf.
Normalement, le programme va vous ouvrir le fichier word et va vous dire si la conversion s'est bien passé où si il y a eu une erreur.

Que faut-il pour l'utiliser ?
Il vous suffit d'avoir Word.

A quoi il ressemble ?
Screenshot du logiciel à l'ouverture :
► Afficher le texte
Screenshot du logiciel remplis :
► Afficher le texte
Quel est le code ?
Le voici :
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Word.au3>
#include <MsgBoxConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <GuiComboBox.au3>

#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Word --> PDF", 430, 279, 192, 124)
Global $Label1 = GUICtrlCreateLabel("Convertisseur Word ----> PDF", 0, 16, 428, 41)
GUICtrlSetFont(-1, 25, 400, 0, "MS Sans Serif")
Global $Input1 = GUICtrlCreateInput("", 192, 72, 225, 21)
Global $Label2 = GUICtrlCreateLabel("Dossier des fichiers words :", 24, 72, 132, 17)
Global $Combo1 = GUICtrlCreateCombo("", 192, 112, 145, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
Global $Label3 = GUICtrlCreateLabel("Choix du fichier word :", 24, 112, 108, 17)
Global $Button1 = GUICtrlCreateButton("Rafraichir", 344, 112, 75, 25)
Global $Input2 = GUICtrlCreateInput("", 192, 152, 225, 21)
Global $Label4 = GUICtrlCreateLabel("Dossier de destination des pdfs :", 24, 152, 157, 17)
Global $Input3 = GUICtrlCreateInput("", 192, 192, 225, 21)
Global $Label5 = GUICtrlCreateLabel("Nom du fichier pdf :", 24, 192, 96, 17)
Global $Button2 = GUICtrlCreateButton("Convertir", 160, 232, 115, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

GUICtrlSetData($Input1, @ScriptDir & "")
GUICtrlSetData($Input2, @ScriptDir & "\PDF")

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
      Case $Button1
         _GUICtrlComboBox_ResetContent($Combo1)
         $dossier = GUICtrlRead($Input1)
         $listeFichiers = _FileListToArrayRec($dossier, "*.docx;*.doc", 1, 0, 1, 0)
         If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Word --> PDF", "ERREUR : " & @error & @CRLF & "Il n'y a peut être pas de fichier .docx ou .doc")

         For $i = 1 To $listeFichiers[0]
            GUICtrlSetData($Combo1, $listeFichiers[$i])
         Next
         MsgBox(1, "Word --> PDF", "Rafraichissement fait !")
      Case $Button2
         $VCombo = GUICtrlRead($Combo1)
         $VInput1 = GUICtrlRead($Input1)
         $VInput2 = GUICtrlRead($Input2)
         $VInput3 = GUICtrlRead($Input3)
         If $VCombo = "" Then
            MsgBox($MB_SYSTEMMODAL, "Word --> PDF", "ERREUR : Vous n'avez rien sélectionné")
         ElseIf $VInput1 = "" Then
            MsgBox($MB_SYSTEMMODAL, "Word --> PDF", "ERREUR : Vous n'avez pas de dossier d'expédition")
         ElseIf $VInput2 = "" Then
            MsgBox($MB_SYSTEMMODAL, "Word --> PDF", "ERREUR : Vous n'avez pas de dossier de destination")
         ElseIf $VInput3 = "" Then
            MsgBox($MB_SYSTEMMODAL, "Word --> PDF", "ERREUR : Vous n'avez pas de nom de fichier")
         ElseIf FileExists($VInput2) = 0 Then
            DirCreate($VInput2)
         Else
            $sFileName = $VInput2& "\"& $VInput3&".pdf"
            if @error Then Exit MsgBox($MB_SYSTEMMODAL, "Word --> PDF","ERREUR : erreur au nom du fichier final ("&@error&")")

            $oWocal = _Word_Create()
            If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Word --> PDF", _
                  "ERREUR : Erreur à la création du word ("&@error&")")

            $oLocal = _Word_DocOpen($oWocal, $VInput1 & "\" & $VCombo, Default, Default, True)
            If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Word --> PDF", _
                  "ERREUR : Impossible d'ouvrir le fichier dossier ("&@error&")")

            _Word_DocExport($oLocal, $sFileName)
            If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Word --> PDF", "ERREUR : Erreur à l'exportation ("&@error&")")

            MsgBox(0, "Word --> PDF", "Conversion faite !")

            _Word_DocClose($oWocal)
         EndIf
   EndSwitch
WEnd
Un lien pour le télécharger ?
Bien sur,
32bits : http://www.mediafire.com/download/2cb74avu963upih/WordPDF.Exe
64bits : http://www.mediafire.com/download/5a5lcjyve6m7y3k/WordPDF64bits.Exe

Bonne journée

Re: [EX] Word --> PDF

Posté : lun. 18 juil. 2016 12:15
par Nicoloquinte
Super , merci , :D :D

à quand le Pdf ---> Word :mrgreen:
non j'rigole , c'est beaucoup plus particulier , au niveau des polices , des tableaux ..ect 8)

Re: [EX] Word --> PDF

Posté : lun. 18 juil. 2016 12:28
par LavaPower
De rien !

Pour le PDF --> Word, j'ai déjà pas mal galéré pour celui-ci alors, ... Plus tard :D

Re: [EX] Word --> PDF

Posté : jeu. 21 juil. 2016 15:14
par marcgforce
Bonjour,

En regardant le code j'ai trouvé qu'il était assez compliqué pour l'utilisateur de rentrer à la main le répertoire source comme destination... du coup j'ai amélioré ton code en rajoutant deux bouton select qui permettent de sélectionner le dossier (fileselectfolder) et j'ai fait en sorte que le rafraichissement soit automatique en sortie de boite de sélection (déplacement du code du bouton rafraichir dans une fonction mais on garde son action)
J'ai aussi modifié les répertoires par défaut pour qu'ils donnent directement dans le profil utilisateur (@userprofile)

Second point, comme dans ton exemple sur le lecteur audio, ce n'est pas très valorisant pour l'utilisateur de voir le programme sortir si le dossier sélectionné ne contient pas les fichiers ciblés, fais un test qui permet de gérer l'erreur (ici If $listeFichiers="")

Troisième point, essaye d'utiliser des labels parlant, tels que $bouton_cequilfait ce sera plus facile quand tu reviendra sur ton code pour l'améliorer

Je te donne le code que j'ai modifié lignes marquées....
#include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Word.au3>
    #include <MsgBoxConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #include <GuiComboBox.au3>

    #Region ### START Koda GUI section ### Form=
    Global $Form1 = GUICreate("Word --> PDF", 500, 279, 192, 124); -------------------
    Global $Label1 = GUICtrlCreateLabel("Convertisseur Word ----> PDF", 0, 16, 428, 41)
    GUICtrlSetFont(-1, 25, 400, 0, "MS Sans Serif")
    Global $Input1 = GUICtrlCreateInput("", 192, 72, 225, 21)
    Global $Label2 = GUICtrlCreateLabel("Dossier des fichiers words :", 24, 72, 132, 17)
    Global $Combo1 = GUICtrlCreateCombo("", 192, 112, 145, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
    Global $Label3 = GUICtrlCreateLabel("Choix du fichier word :", 24, 112, 108, 17)
    Global $Button1 = GUICtrlCreateButton("Rafraichir", 344, 112, 75, 25)
    Global $Input2 = GUICtrlCreateInput("", 192, 152, 225, 21)
    Global $Label4 = GUICtrlCreateLabel("Dossier de destination des pdfs :", 24, 152, 157, 17)
    Global $Input3 = GUICtrlCreateInput("", 192, 192, 225, 21)
    Global $Label5 = GUICtrlCreateLabel("Nom du fichier pdf :", 24, 192, 96, 17)
    Global $Button2 = GUICtrlCreateButton("Convertir", 160, 232, 115, 33)
    Global $Button_select_source_folder=GUICtrlCreateButton("Select",420,70,50,25);---------------------
    Global $Button_select_destination_folder=GUICtrlCreateButton("Select",420,152,50,25);-----------------
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    GUICtrlSetData($Input1, @UserProfileDir );----------------
    GUICtrlSetData($Input2, @UserProfileDir );--------------------
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
            Case $Button1
            _rafraichir();------------------
                MsgBox(1, "Word --> PDF", "Rafraichissement fait !")
            Case $Button2
                $VCombo = GUICtrlRead($Combo1)
                $VInput1 = GUICtrlRead($Input1)
                $VInput2 = GUICtrlRead($Input2)
                $VInput3 = GUICtrlRead($Input3)
                If $VCombo = "" Then
                    MsgBox($MB_SYSTEMMODAL, "Word --> PDF", "ERREUR : Vous n'avez rien sélectionné")
                ElseIf $VInput1 = "" Then
                    MsgBox($MB_SYSTEMMODAL, "Word --> PDF", "ERREUR : Vous n'avez pas de dossier d'expédition")
                ElseIf $VInput2 = "" Then
                    MsgBox($MB_SYSTEMMODAL, "Word --> PDF", "ERREUR : Vous n'avez pas de dossier de destination")
                ElseIf $VInput3 = "" Then
                    MsgBox($MB_SYSTEMMODAL, "Word --> PDF", "ERREUR : Vous n'avez pas de nom de fichier")
                ElseIf FileExists($VInput2) = 0 Then
                    DirCreate($VInput2)
                Else
                    $sFileName = $VInput2& "\"& $VInput3&".pdf"
                    if @error Then Exit MsgBox($MB_SYSTEMMODAL, "Word --> PDF","ERREUR : erreur au nom du fichier final ("&@error&")")

                    $oWocal = _Word_Create()
                    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Word --> PDF", _
                            "ERREUR : Erreur à la création du word ("&@error&")")

                    $oLocal = _Word_DocOpen($oWocal, $VInput1 & "\" & $VCombo, Default, Default, True)
                    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Word --> PDF", _
                            "ERREUR : Impossible d'ouvrir le fichier dossier ("&@error&")")

                    _Word_DocExport($oLocal, $sFileName)
                    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Word --> PDF", "ERREUR : Erreur à l'exportation ("&@error&")")

                    MsgBox(0, "Word --> PDF", "Conversion faite !")

                    _Word_DocClose($oWocal)
                EndIf
         Case $Button_select_source_folder;---------------------
               $choose=FileSelectFolder("Selectionnez un dossier",@UserProfileDir,1);---------------------
               GUICtrlSetData($Input1,$choose);---------------------
               _rafraichir();---------------------
         Case $Button_select_destination_folder;---------------------
               $choose=FileSelectFolder("Selectionnez un dossier","::{450D8FBA-AD25-11D0-98A8-0800361B1103}",1);---------------------
               GUICtrlSetData($Input2,$choose);---------------------

         EndSwitch
   WEnd
;---------------------  LA FONCTION RAJOUTEE
   func _rafraichir()
         _GUICtrlComboBox_ResetContent($Combo1)
         $dossier = GUICtrlRead($Input1)
            $listeFichiers = _FileListToArrayRec($dossier, "*.docx;*.doc", 1, 0, 1, 0)
         If $listeFichiers="" Then ; ici le test si il n'y a pas de fichiers cibles
            MsgBox($MB_SYSTEMMODAL, "Word --> PDF", "ERREUR : " & @CRLF & "Aucun  .docx ou .doc dans le dossier") ; on préviens l'utilisateur, mais tu l'avais fait
            $choose=FileSelectFolder("Selectionnez un dossier",@UserProfileDir,1); on boucle sur la sélection d'un autre dossier
               if @error=1 then return 0; si jamais l'utilisateur appuie sur annuler
            GUICtrlSetData($Input1,$choose)
            _rafraichir(); reboucle sur lui même
         Else
            For $i = 1 To $listeFichiers[0];
               GUICtrlSetData($Combo1, $listeFichiers[$i])
            Next
         EndIf
   EndFunc
En somme continue de programmer, c'est super !

Re: [EX] Word --> PDF

Posté : jeu. 21 juil. 2016 20:39
par LavaPower
Merci !

Pour ta "mise à jour", elle est génial