[EX] Word --> PDF

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
LavaPower
Niveau 1
Niveau 1
Messages : 11
Enregistré le : dim. 17 juil. 2016 19:20
Status : Hors ligne

[EX] Word --> PDF

#1

Message 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
Avatar du membre
Nicoloquinte
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 15 juil. 2016 11:57
Status : Hors ligne

Re: [EX] Word --> PDF

#2

Message 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)
Nico ¤_¤
Avatar du membre
LavaPower
Niveau 1
Niveau 1
Messages : 11
Enregistré le : dim. 17 juil. 2016 19:20
Status : Hors ligne

Re: [EX] Word --> PDF

#3

Message par LavaPower »

De rien !

Pour le PDF --> Word, j'ai déjà pas mal galéré pour celui-ci alors, ... Plus tard :D
marcgforce
Niveau 3
Niveau 3
Messages : 47
Enregistré le : lun. 07 mars 2016 07:20
Status : Hors ligne

Re: [EX] Word --> PDF

#4

Message 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 !
Avatar du membre
LavaPower
Niveau 1
Niveau 1
Messages : 11
Enregistré le : dim. 17 juil. 2016 19:20
Status : Hors ligne

Re: [EX] Word --> PDF

#5

Message par LavaPower »

Merci !

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