Page 1 sur 1

GUI pour total PDF converter en command line

Posté : ven. 30 déc. 2022 21:22
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 :)

Re: [..]Amélioration de script

Posté : ven. 30 déc. 2022 22:10
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é. ^^

Re: [..]Amélioration de script

Posté : sam. 31 déc. 2022 13:00
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

Re: [..]Amélioration de script

Posté : sam. 31 déc. 2022 16:17
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

Re: [..]Amélioration de script

Posté : sam. 31 déc. 2022 17:18
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

Re: [..]Amélioration de script

Posté : sam. 31 déc. 2022 19:09
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:

Re: [..]Amélioration de script

Posté : sam. 31 déc. 2022 19:28
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]

Re: [..]Amélioration de script

Posté : dim. 01 janv. 2023 01:47
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:

Re: [..]Amélioration de script

Posté : dim. 01 janv. 2023 10:05
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"'

Re: [..]Amélioration de script

Posté : dim. 01 janv. 2023 12:03
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

Re: [..]Amélioration de script  

Posté : dim. 01 janv. 2023 15:45
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

Re: [..]Amélioration de script

Posté : dim. 01 janv. 2023 17:53
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

Re: [..]Amélioration de script

Posté : dim. 01 janv. 2023 21:02
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:

Re: GUI pour total PDF converter en command line

Posté : lun. 01 avr. 2024 16:03
par shuradoko999
Bonjour a tous :D

Je relance ce sujet car j'ai a nouveau besoin d aide de la communauté

Je souhaiterai modifier le script suivant deja proposé par vos soins :

Code : Tout sélectionner

      Case $msg = $Button2
         $path = FileSelectFolder("Choose a folder.", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")

         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)
          $aFile = '"' & $sFile & '"'
          $aPath = '"' & $sPath[0] & '"'
          ConsoleWrite($aFile & " " &   $aPath & ' -c PDF:Pages -s' & @CRLF); pour voir à supprimer
          ShellExecute (@ScriptDir & "\PDFCombineProPortable.exe",$aFile & " " &  $aPath & " -c PDF:Pages -s","TEST.PDF")
         Endif
A la base ce script etait pour un autre logiciel , j ai essayer de l'adapter pour PDFCombineProPortable sans succés.

le logiciel a utiliser dans la gui est PDFCombineProPortable , sa fonction est de combiner plusieurs pdf en 1 seul.
je voudrais que lorsque je lance ma gui , je puisse choisir un dossier ou il y a plusieurs pdf ( ça c'est bon ) et ensuite que cela lance le logiciel en ligne de commande et que le fichier compiler apparaisse dans le meme dossier avec le nom fusion.pdf

la fonction ligne de commande du logiciel est la suivante a intégrer dans ma gui
PDFCombinePro.exe "<source>" "<destination>" <options>

Merci par avance pour votre aide :D