[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 18:20
Contact :
Status : Hors ligne

[EX] Word --> PDF

#1

Message par LavaPower » lun. 18 juil. 2016 09:46

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/2cb74 ... ordPDF.Exe
64bits : http://www.mediafire.com/download/5a5lc ... 64bits.Exe

Bonne journée

Avatar du membre
Nicoloquinte
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 15 juil. 2016 10:57
Contact :
Status : Hors ligne

Re: [EX] Word --> PDF

#2

Message par Nicoloquinte » lun. 18 juil. 2016 11:15

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 18:20
Contact :
Status : Hors ligne

Re: [EX] Word --> PDF

#3

Message par LavaPower » lun. 18 juil. 2016 11:28

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 : 40
Enregistré le : lun. 07 mars 2016 07:20
Status : Hors ligne

Re: [EX] Word --> PDF

#4

Message par marcgforce » jeu. 21 juil. 2016 14:14

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 18:20
Contact :
Status : Hors ligne

Re: [EX] Word --> PDF

#5

Message par LavaPower » jeu. 21 juil. 2016 19:39

Merci !

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

Répondre