Page 1 sur 1

[UDF] Infos et recherche dans les PDF avec XPDF

Posté : sam. 21 déc. 2013 11:45
par jguinch
Suite à ce sujet qui m'a bien intéressé, voici quelques fonctions qui vont permettre de :
- récupérer des infos sur les fichier PDF
- convertir un fichier PDF en fichier texte
- recherche une chaîne de caractères dans un fichier PDF

Ces fonctions se basent sur l'utilisation de deux programmes de XPDF, qui sont pdfinfo et pdftotext.
Vous pouvez télécharger les outils XPDF ici

Je n'ai pas mis d'exemple, je pense que les fonctions sont simples à appréhender.
► Afficher le texteXPDF.au3

Re: [UDF] Infos et recherche dans les PDF avec XPDF

Posté : sam. 21 déc. 2013 11:54
par mikell
Super... :wink:
Rapport au sujet évoqué, en cas de dysfonctionnement la première chose à vérifier est que le nom du fichier PDF ne contient pas de caractères spéciaux

Re: [UDF] Infos et recherche dans les PDF avec XPDF

Posté : sam. 21 déc. 2013 22:18
par jguinch
euuh, j'ai pas compris l'histoire des caractères spéciaux... :?

Re: [UDF] Infos et recherche dans les PDF avec XPDF

Posté : dim. 22 déc. 2013 00:15
par mikell
aulus a écrit :Je pense que les dysfonctionnements provenaient du nom de fichier long du pdf qui me servait de test.
N'ayant pas testé je ne peux que conjecturer que le nom de son fichier contenait peut-être des caractères susceptibles de perturber la commande :?:

Re: [UDF] Infos et recherche dans les PDF avec XPDF

Posté : mer. 05 mars 2014 12:02
par Neutro
Merci beaucoup, très utile cet UDF !

Voici un exemple de script qui recherche le texte contenu dans un fichier Excel dans un fichier PDF et écrit des choses dans le fichier Excel en fonction de s'il l'a trouvé ou non :

Code : Tout sélectionner


#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.10.2
 Author:         Neutro
 Date: 5 mars 2014

 Script Function:
    Recherche d'une chaine de caractères dans un fichier PDF à partir d'un fichier Excel

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

#requireadmin

#include <xpdf.au3>
#Include <Excel Rewrite.au3>
#include <File.au3>
#include <String.au3>

$organigramme = ""

$prog_excel = ""

$prog_excel = _Excel_Open(False)

$workbook = _Excel_BookOpen($prog_excel, "D:\Informatique\liste.xlsx)

_XPDF_ToText(@scriptdir & "\Organigramme.pdf", @scriptdir & "\Organigramme.txt")

$organigramme = Fileread(@scriptdir & "\Organigramme.txt")

SplashTextOn("Recherche dans l'Organigramme","Traitement du login : " & @CRLF & @CRLF ,300,90,-1,-1, 16)

for $i = 2 to 270 step 1 ;pour chaque cellule dans la colonne A

    $cellule = _Excel_RangeRead($workbook, $workbook.Activesheet, "A" & $i) ; récupération du contenu de la cellule

    controlsettext("Recherche dans l'Organigramme", "Traitement du login : ", "Static1", "Traitement du login : " & @CRLF & @CRLF & $cellule)

    $recherche_PDF = StringInStr($organigramme, stringleft($cellule,1) & ". " & StringMid($cellule, 2))

    if $recherche_PDF <> 0 Then

        _Excel_RangeWrite($workbook, $workbook.Activesheet, "OUI", "D" & $i) ;si on trouve le nom dans l'organigramme, on écrit "OUI" dans la colonne correspondante du fichier Excel

        $prog_excel.Activesheet.range("D" & $i).Font.ColorIndex = 10

        $prog_excel.Activesheet.range("D" & $i).Font.Bold = True

        $prog_excel.Activesheet.range("D" & $i).HorizontalAlignment = -4108 ; center

    else

        ;sinon on essaye de voir si le prénom de la personne est un nom composé du style "J.C. Deschamps"

        $recherche_PDF = StringInStr($organigramme, stringleft($cellule,1) & "." & Stringmid($cellule, 2, 1) & ". " & StringMid($cellule, 3))

        if $recherche_PDF <> 0 Then

            _Excel_RangeWrite($workbook, $workbook.Activesheet, "OUI", "D" & $i) ;si on trouve le nom dans l'organigramme, on écrit "OUI" dans la colonne correspondante du fichier Excel

            $prog_excel.Activesheet.range("D" & $i).Font.ColorIndex = 10

            $prog_excel.Activesheet.range("D" & $i).Font.Bold = True

            $prog_excel.Activesheet.range("D" & $i).HorizontalAlignment = -4108 ; center

        else

            _Excel_RangeWrite($workbook, $workbook.Activesheet, "NON", "D" & $i) ;si on trouve le nom dans l'organigramme, on écrit "NON" dans la colonne correspondante du fichier Excel

            $prog_excel.Activesheet.range("D" & $i).Font.ColorIndex = 3

            $prog_excel.Activesheet.range("D" & $i).Font.Bold = True

            $prog_excel.Activesheet.range("D" & $i).HorizontalAlignment = -4108 ; center

        EndIf


    EndIf

next

_Excel_Close($prog_excel)