Aide et conseils concernant AutoIt et ses outils.
fusor
Niveau 1
Messages : 6 Enregistré le : lun. 28 juin 2010 18:23
Status :
Hors ligne
#1
Message
par fusor » lun. 31 août 2020 18:30
Bonjour à tous,
Je cherche un peu d'aide sur une fonction qui permet de compter le nombre de page dans un fichier pdf.
Si quelqu'un a la gentillesse de m'aider ça serait sympa.
J'ai un souci avec les Array et je ne pige pas.
Merci
MsgBox ( 0 , "" , pagecount
( "C:\exemple.pdf" ) ) Func pagecount
( $sfilename ) Local $c = 0 Local $pages = - 1 ; Ouvre le fichier pdf $handle = FileOpen ( $sfilename , 0 ) If @ERROR Then Return SetError ( 1 , 0 , 0 ) Do $s = FileReadLine ( $handle ) $EOF = @ERROR $c += 1 ; voir les 10 premieres lignes avec /N If $c <= 10 Then If StringInStr ( $s , "/N" ) > 0 Then $array1 = StringRegExp ( $s , "/N\h(\d+)" , 3 ) $pages = Number ( $array1 [ 0 ] ) ExitLoop EndIf EndIf ; voir toutes les lignes avec '/count' If StringInStr ( $s , "/count" ) > 0 Then $array2 = StringRegExp ( $s , "/count\h(\d+)" , 3 ) $pages = Number ( $array2 [ 0 ] ) ExitLoop EndIf Until $EOF = - 1 ; fermer le fichier et retour du nombre de page FileClose ( $handle ) If $pages < 0 Then $pages = 1 Return $pages EndFunc
fusor
Niveau 1
Messages : 6 Enregistré le : lun. 28 juin 2010 18:23
Status :
Hors ligne
#2
Message
par fusor » mar. 01 sept. 2020 13:31
Personne pour me faire marcher ce petit bout de code ?
walkson
Modérateur
Messages : 1036 Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status :
Hors ligne
#3
Message
par walkson » mar. 01 sept. 2020 15:02
Bonjour,
mettez $handle = FileOpen($sfilename,512)
($FO_ANSI (512) = Use ANSI reading and writing mode.) ça devrait fonctionner
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
fusor
Niveau 1
Messages : 6 Enregistré le : lun. 28 juin 2010 18:23
Status :
Hors ligne
#4
Message
par fusor » mar. 01 sept. 2020 19:22
Merci pour ce premier retour.
Malheureusement, cela ne fonctionne pas.
walkson
Modérateur
Messages : 1036 Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status :
Hors ligne
#5
Message
par walkson » mar. 01 sept. 2020 21:19
Ce code fonctionne après quelques modifications
Func pagecount
( $sfilename ) Local $c = 0 , $EOF = 0 Local $pages = - 1 ;'OPEN the PDF file $handle = FileOpen ( $sfilename , 512 ) If @error Then Return SetError ( 1 , 0 , 0 ) ;Get the data from the file Do $c += 1 $s = FileReadLine ( $handle , $c ) $EOF = @error ;Look within the top 10 lines for /N If $c <= 10 Then If StringInStr ( $s , "/N" ) > 0 Then $array1 = StringRegExp ( $s , "/N\h(\d+)" , 3 ) $pages = Number ( $array1 [ 0 ] ) ExitLoop EndIf EndIf ;Check every line for /count If StringInStr ( $s , "/count" ) > 0 Then $array2 = StringRegExp ( $s , "(?i)/count\h(\d+)" , 3 ) $pages = Number ( $array2 [ 0 ] ) ExitLoop EndIf Until $EOF = - 1 FileClose ( $handle ) If $pages < 0 Then $pages = 1 Return $pages EndFunc ;==>pagecount
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
fusor
Niveau 1
Messages : 6 Enregistré le : lun. 28 juin 2010 18:23
Status :
Hors ligne
#6
Message
par fusor » mer. 02 sept. 2020 15:51
Super, ça fonctionne
Merci Walkson
jguinch
Modérateur
Messages : 2514 Enregistré le : lun. 14 févr. 2011 22:12
Status :
Hors ligne
#7
Message
par jguinch » ven. 04 sept. 2020 21:48
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
fusor
Niveau 1
Messages : 6 Enregistré le : lun. 28 juin 2010 18:23
Status :
Hors ligne
#8
Message
par fusor » dim. 13 sept. 2020 10:22
Merci, le résultat est même bien plus rapide que le mien.