GUI pour total PDF converter en command line

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
shuradoko
Niveau 1
Niveau 1
Messages : 6
Enregistré le : ven. 30 déc. 2022 20:58
Status : Hors ligne

GUI pour total PDF converter en command line

#1

Message par shuradoko »

Bonjour a tous :)

je me suis fais un raccourci en script autoit des différentes conversion du logiciel total PDF converter.

J'utilise la version portable du logiciel.

Mon script marche bien mais j'aimerai l’améliorer.

Actuellement mon script s’exécute de la manière suivante : ( conversion pdf en docx )
ShellExecute (@ScriptDir & "\PDFConverter64.exe","C:\Users\A\Desktop\test\03.pdf C:\Users\A\Desktop\test\ -c DOCX -s","TEST.DOCX")

Je voudrais pouvoir ajouter une gui qui permettrai de sélectionner le fichier a convertir ou qu il soit dans l ordinateur par l'intermédiaire d'un bouton pour parcourir l'ordinateur et que le fichier converti apparaisse dans le même dossier que le fichier cible.Du coup je pense que le code du script va changer.

Merci par avance pour l aide que vous pourrez m apporter :)
Modifié en dernier par walkson le dim. 01 janv. 2023 21:41, modifié 1 fois.
Raison : Titre plus explicite pour ceux qui seront intéressés
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..]Amélioration de script

#2

Message par Tlem »

Bonsoir.
Avez-vous fait des recherches sur le forum, car des exemples de scripts pour sélectionner un fichier sont présent en bonne quantité. ^^
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é".
shuradoko
Niveau 1
Niveau 1
Messages : 6
Enregistré le : ven. 30 déc. 2022 20:58
Status : Hors ligne

Re: [..]Amélioration de script

#3

Message par shuradoko »

Bonjour tlem :D

J'ai chercher de mon cote niveau gui et j ai trouver ceci
mais j ai un soucis pour modifier mon code au moment de la conversion.
Pour rappel j utilise total pdf converter et voici la ligne de commande du logiciel : PDFConverter64.exe "<source>" "<destination>" <options>

voici mon code complet
#NoTrayIcon
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
Opt("MustDeclareVars", 0) ;0=no, 1=require pre-declaration
Global $assets = @ScriptDir & "\Assets\"
Global $ui_width = 800        ;Universal (try change to some)
Global $ui_height = 600

Global $left_margin = 20
Global $top_margin = 20

Global $cUI = 0x318CE7, $cContent = 0xEEEEEE, $cSearch = 0x6A1B9A ;colors

Global $ui = GUICreate("PDF TO DOCX", $ui_width, $ui_height, Default, Default, $WS_POPUP, $WS_EX_CONTROLPARENT)
GUISetBkColor($cUI, $ui)



Global $Button1 = GUICtrlCreateButton("* * * * *  PDF TO DOCX  * * * * *", 250, 40, 315, 55)
GUICtrlSetFont(-1, 10, 800, Default, "Segoe UI", 5)

Global $Button2 = GUICtrlCreateButton("SELECTIONNER PDF", 35, 260, 215, 35)
GUICtrlSetFont(-1, 10, 800, Default, "Segoe UI", 5)

Global $Button3 = GUICtrlCreateButton("CONVERTIR", 108, 500, 70, 20)
GUISetState(@SW_SHOW)

Global $Button4 = GUICtrlCreateButton("REDUIRE", 408, 500, 70, 20)
GUICtrlSetFont(-1, 10, 800, Default, "Segoe UI", 5)


Global $Button5 = GUICtrlCreateButton("FERMER", 499, 500, 70, 20)
GUICtrlSetFont(-1, 10, 800, Default, "Segoe UI", 5)


$Input_1 = GUICtrlCreateInput("", 35, 300, 370, 20)




While 1
$msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
             ExitLoop

      Case $msg = $Button2
         $path = FileOpenDialog("Add File", "", "All Files (*.*)",1+2)
         If @error Then
            MsgBox(4096,"","PAS DE FICHIER CHOISI")
         Else
            GUICtrlSetData($Input_1, $path)
          EndIf

      Case $msg = $Button3
         If GUICtrlRead($Input_1) = "" Then
         MsgBox(64, "VOUS DEVEZ CHOISIR UN FICHIER")
         Else
         ShellExecute(GUICtrlRead($Input_1))
         Endif

       Case $msg = $Button4
      ShellExecute ("C:\Users\A\Desktop\a changer 2\minimize.exe" )

        Case $msg = $Button5
      ShellExecute ("C:\Users\A\Desktop\a changer 2\down.exe" )


    EndSelect
Wend

lorsque je lance le script je sélectionne mon pdf en cliquant sur sélectionner pdf , il apparait alors dans $Input_1

et je voudrais que lorsque j appuie sur le $Button3 ( convertir ), exécuter ceci : ShellExecute (@ScriptDir & "\PDFConverter64.exe","C:\Users\A\Desktop\test\03.pdf C:\Users\A\Desktop\test\ -c DOCX -s","TEST.DOCX"

A la place de C:\Users\A\Desktop\test\03.pdf , je voudrais que ça sélectionne mon $Input_1 , et que ça enregistre le nouveau fichier .docx dans
le même endroit ou on la sélectionner.

Actuellement a la fonction du $Button3 j'ai ça : ShellExecute(GUICtrlRead($Input_1)) , qui sert a la base a ouvrir le fichier selectionner en $Input_1

j espère avoir été un minimum clair :?

Merci
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..]Amélioration de script

#4

Message par walkson »

Bonjour et bonne année
Pour récupérer le chemin vous pouvez utiliser ceci
$array = StringRegExp($sFile, "(.*[\\]+)",3) $sFile étant le chemin dans l' input
Je vous mets un petit code qui permet de récupérer les chemins, les noms des fichiers et les extensions

Code : Tout sélectionner

#include <Array.au3>
$sFile = "D:\Mes Documents D\bureau autoit\AAA\regex_lettredans.Variable.au3"
ConsoleWrite(StringRegExpReplace($sFile, "(.*[\\]+)", "copie_") & @CRLF);regex_lettredansVariable.au3
$array = StringRegExp($sFile, "(.+[\\])(.+)",3);D:\Mes Documents D\bureau autoit\AAA\  et   regex_lettredansVariable.au3  2 lignes
_ArrayDisplay($array)
$array = StringRegExp($sFile, "(.*[\\]+)",3);D:\Mes Documents D\bureau autoit\AAA\
_ArrayDisplay($array)
$array = StringRegExp($sFile, "(?s).*\\(.*)",1);regex_lettredansVariable.au3
_ArrayDisplay($array)
$array = StringRegExp($sFile,"([^:\\/]*?)(?:\.([^ :\\/.]*))?$",1) ;regex_lettredans.Variable et au3 2 lignes
_ArrayDisplay($array)
MsgBox(0,"", $array[1]) ;on récupère la deuxième ligne
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..]Amélioration de script

#5

Message par walkson »

J'en ai profité pour corriger des choses bizarres sur votre code
ShellExecute ("C:\Users\A\Desktop\a changer 2\minimize.exe" ) et autres....

Code : Tout sélectionner

#NoTrayIcon
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
Opt("MustDeclareVars", 0) ;0=no, 1=require pre-declaration
Global $assets = @ScriptDir & "\Assets\"
Global $ui_width = 800        ;Universal (try change to some)
Global $ui_height = 600

Global $left_margin = 20
Global $top_margin = 20

Global $cUI = 0x318CE7, $cContent = 0xEEEEEE, $cSearch = 0x6A1B9A ;colors

Global $ui = GUICreate("PDF TO DOCX", $ui_width, $ui_height, Default, Default, $WS_POPUP, $WS_EX_CONTROLPARENT)
GUISetBkColor($cUI, $ui)



Global $Button1 = GUICtrlCreateButton("* * * * *  PDF TO DOCX  * * * * *", 250, 40, 315, 55)
GUICtrlSetFont(-1, 10, 800, Default, "Segoe UI", 5)

Global $Button2 = GUICtrlCreateButton("SELECTIONNER PDF", 35, 260, 215, 35)
GUICtrlSetFont(-1, 10, 800, Default, "Segoe UI", 5)

Global $Button3 = GUICtrlCreateButton("CONVERTIR", 108, 500, 70, 20)
GUISetState(@SW_SHOW)

Global $Button4 = GUICtrlCreateButton("REDUIRE", 408, 500, 70, 20)
GUICtrlSetFont(-1, 10, 800, Default, "Segoe UI", 5)


Global $Button5 = GUICtrlCreateButton("FERMER", 499, 500, 70, 20)
GUICtrlSetFont(-1, 10, 800, Default, "Segoe UI", 5)


$Input_1 = GUICtrlCreateInput("", 35, 300, 370, 20)




While 1
$msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE Or $msg = $Button5
             Exit

      Case $msg = $Button2
         $path = FileOpenDialog("Add File", "", "PDF Files (*.pdf)",1+2)
         If @error Then
            MsgBox(4096,"","PAS DE FICHIER CHOISI")
         Else
            GUICtrlSetData($Input_1, $path)
          EndIf

      Case $msg = $Button3
         If GUICtrlRead($Input_1) = "" Then
         MsgBox(16,"Attention", "VOUS DEVEZ CHOISIR UN FICHIER")
         Else
         $sFile = GUICtrlRead($Input_1)
		 $sPath = StringRegExp($sFile, "(.*[\\]+)",3)
		 MsgBox(0,"",$sPath[0]) ; pour voir à supprimer
		 ShellExecute (@ScriptDir & "\PDFConverter64.exe",$sFile & " " &  $sPath[0] & " -c DOCX -s","TEST.DOCX")
         Endif

       Case $msg = $Button4
		GUISetState(@SW_MINIMIZE)

    EndSelect
Wend
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
shuradoko
Niveau 1
Niveau 1
Messages : 6
Enregistré le : ven. 30 déc. 2022 20:58
Status : Hors ligne

Re: [..]Amélioration de script

#6

Message par shuradoko »

Bonjour walkson :)

Merci beaucoup pour votre correction

Cela m'as beaucoup aider :D :D

Le script fonctionne dans certains cas mais pas d'autres

si le meme fichier pdf se trouve sur d:/04.pdf, la conversion se fais sans probleme

si le fichier se trouve dans d:/test pdf/04.pdf , la conversion ne se fais pas et une erreur s affiche.

Autre problème si j ai un fichier pdf qui se trouve dans C:\Users\A\Desktop\ODJ Réunion du 24 février 2022.pdf
cela ne fonctionne pas.

Mais si je renomme ce même fichier en C:\Users\A\Desktop\999.pdf cela fonctionne sans problème

Pourriez vous m'aider a nouveau

Merci :D

et bon réveillon du jour de l an :mrgreen:
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..]Amélioration de script

#7

Message par walkson »

Je pense que cela vient des espaces dans le chemin, il faut mettre la variable avec des doubles cotes (' " ')(sans les espaces)
$sFile = '"' & GUICtrlRead($Input_1) & '"'
Idem avec $sPath[0]
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
shuradoko
Niveau 1
Niveau 1
Messages : 6
Enregistré le : ven. 30 déc. 2022 20:58
Status : Hors ligne

Re: [..]Amélioration de script

#8

Message par shuradoko »

Bonsoir walkson :)

Voici ce que j'ai modifier :
#NoTrayIcon
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
Opt("MustDeclareVars", 0) ;0=no, 1=require pre-declaration
Global $assets = @ScriptDir & "\Assets\"
Global $ui_width = 800        ;Universal (try change to some)
Global $ui_height = 600

Global $left_margin = 20
Global $top_margin = 20

Global $cUI = 0x318CE7, $cContent = 0xEEEEEE, $cSearch = 0x6A1B9A ;colors

Global $ui = GUICreate("PDF TO DOCX", $ui_width, $ui_height, Default, Default, $WS_POPUP, $WS_EX_CONTROLPARENT)
GUISetBkColor($cUI, $ui)



Global $Button1 = GUICtrlCreateButton("* * * * *  PDF TO DOCX  * * * * *", 250, 40, 315, 55)
GUICtrlSetFont(-1, 10, 800, Default, "Segoe UI", 5)

Global $Button2 = GUICtrlCreateButton("SELECTIONNER PDF", 35, 260, 215, 35)
GUICtrlSetFont(-1, 10, 800, Default, "Segoe UI", 5)

Global $Button3 = GUICtrlCreateButton("CONVERTIR", 108, 500, 70, 20)
GUISetState(@SW_SHOW)

Global $Button4 = GUICtrlCreateButton("REDUIRE", 408, 500, 70, 20)
GUICtrlSetFont(-1, 10, 800, Default, "Segoe UI", 5)


Global $Button5 = GUICtrlCreateButton("FERMER", 499, 500, 70, 20)
GUICtrlSetFont(-1, 10, 800, Default, "Segoe UI", 5)


$Input_1 = GUICtrlCreateInput("", 35, 300, 370, 20)




While 1
$msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE Or $msg = $Button5
             Exit

      Case $msg = $Button2
         $path = FileOpenDialog("Add File", "", "PDF Files (*.pdf)",1+2)
         If @error Then
            MsgBox(4096,"","PAS DE FICHIER CHOISI")
         Else
            GUICtrlSetData($Input_1, $path)
          EndIf

      Case $msg = $Button3
         If GUICtrlRead($Input_1) = '"' Then
         MsgBox(16,"Attention", "VOUS DEVEZ CHOISIR UN FICHIER")
         Else
         $sFile = GUICtrlRead($Input_1)
       $sPath = StringRegExp($sFile, "(.*[\\]+)",3)
       MsgBox(0,'"',$sPath[0]) ; pour voir à supprimer
       ShellExecute (@ScriptDir & "\PDFConverter64.exe",$sFile & '"' &  $sPath[0] & " -c DOCX -s","TEST.DOCX")
         Endif

       Case $msg = $Button4
      GUISetState(@SW_MINIMIZE)

    EndSelect
Wend

Si les modifs sont bonnes , ça ne fonctionne toujours pas :?


Merci et bonne annee 2023 :mrgreen:
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..]Amélioration de script

#9

Message par mikell »

Ah, comme dit walkson, la bonne galère des espaces dans les chemins.... :mrgreen:
Je n'ai pas le programme, peut-être comme ça ?

$sFile = @scriptdir & "\test\03.pdf"
$sPath = StringRegExp($sFile, "(.*[\\]+)",3)
$command = '"' & @ScriptDir & '\PDFConverter64.exe"' &', "' & $sFile & '" "' & "'" & $sPath[0] & "'" & ' -c DOCX -s"' &', "TEST.DOCX"'

Msgbox(0,"", $command)
ou ça...

$command = '"' & @ScriptDir & '\PDFConverter64.exe"' &", '" & '"' & $sFile & '" "' & $sPath[0] & '"' & " -c DOCX -s'" &', "TEST.DOCX"'
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
shuradoko
Niveau 1
Niveau 1
Messages : 6
Enregistré le : ven. 30 déc. 2022 20:58
Status : Hors ligne

Re: [..]Amélioration de script

#10

Message par shuradoko »

Bonjour mikell :)

J'ai essayer les 2 modifs.

L'une m'ouvre une boite de dialogue et ça ne va pas plus loin.
Et l'autre il ne se passe rien quand je clique sur convertir.

Merci pour l'aide
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..]Amélioration de script  

#11

Message par walkson »

Bonjour
Je préfère modifier les variables en dehors de la ligne de commande
      Case $msg = $Button3
         If GUICtrlRead($Input_1) = "" Then
         MsgBox(16,"Attention", "VOUS DEVEZ CHOISIR UN FICHIER")
         Else
          $sFile =  GUICtrlRead($Input_1)
          $sPath = StringRegExp($sFile, "(.*[\\]+)",3)
          $aFile = '"' & $sFile & '"'
          $aPath = '"' & $sPath[0] & '"'
          ConsoleWrite($aFile & " " &   $aPath & ' -c DOCX -s' & @CRLF); pour voir à supprimer
          ShellExecute (@ScriptDir & "\PDFConverter64.exe",$aFile & " " &  $aPath & " -c DOCX -s","TEST.DOCX")
         Endif
ce qui doit nous donner quelque chose comme ça
"C:\Users\AA\Desktop\Nous contacter Assurance.pdf" "C:\Users\AA\Desktop\" -c DOCX -s
Je suis comme Michel, je n'ai pas le programme et ne peux tester la ligne de commande
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..]Amélioration de script

#12

Message par mikell »

Faut faire des essais...
Mais si la commande doit être du type : PDFConverter64.exe "<source>" "<destination>" <options>
j'aurais tendance à tester qqe chose comme ça (voire à essayer avec Run)

$source = @scriptdir & "\test\03.pdf"
$dest = @scriptdir & "\test\03b.docx"
msgbox(0,"", '"' & $source & '" "' & $dest & '" -c DOCX -s')
;ShellExecute (@ScriptDir & "\PDFConverter64.exe", '"' & $source & '" "' & $dest & '" -c DOCX -s')
Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
shuradoko
Niveau 1
Niveau 1
Messages : 6
Enregistré le : ven. 30 déc. 2022 20:58
Status : Hors ligne

Re: [..]Amélioration de script

#13

Message par shuradoko »

Bonjour :D

Le dernier code de walkson est le bon :wink:

cela fonctionne parfaitement :)

Merci beaucoup pour votre aide @walkson et @mikell :mrgreen:
Répondre