IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Scanner une bibliothèque de fichiers pdf


Sujet :

Langage PHP

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut Scanner une bibliothèque de fichiers pdf
    L'envoironnement:
    Un repertoire sur le reseau contenant toute une arborescence (Fournisseur, type de doc ...) de documentation technique au format PDF.

    Le projet:
    Créer une table pour référencer ces documents
    La table aurait un champs fournisseur,un champs path, un champs type de doc un champs résumé et un champs texte.
    Hormis le champs résumé, je dois pouvoir récupérer tous les autres champs en scannant le repertoire. chaque fournisseur ayant un répertoire à son nom dans lequel se trouve un répertoire par type de doc.

    La moulinette php devra :
    • scanner le répertoire => recupérer le nom du fournisseur (nom du rep),
    • scanner les sous repertoires => recupérer le type de doc(nom du rep),
    • scanner les fichiers pdf pour en récupérer le path complet puis le texte contenu dans le pdf (lorsque cela est possible en fonction de la compression ou si il y en a)


    cette table servira ensuite de base pour un moteur de recherche de doc pdf en particulier pour le champ texte pour une recherche en fulltext

    Je me pose d'ailleurs la question à savoir si il ne serait pas plus simple de mettre directement le doc PDF en BLOB ?

    Ma question porte sur la methode de scan récurisif de l'arborescence du repertoire de bibliothèque pour recupérer toutes ces infos ...
    Je ne parle pas de l'accès sur le reseau, ça c'est résolu j'arrive à afficher un pdf du repertoire.

    Avez vous déja des expériences de ce type ?
    quels seraient vos conseils en la matière ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour SF,

    Concernant l'indexation des PDF tu peux t'orienter vers Zend_Search ou Apache Solr.

    Pour la récupération de leur path il suffit, comme tu le préconises, d'une fonction récursive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    function recurseThruFolders($folder_path, &$pdf_arr){
        $dir = opendir($folder_path);
        while($f = readdir($dir)){
            if(is_dir($folder_path.$f)){
                recurseThruFolders($folder_path.$f, $pdf_arr);
            }
            elseif(substr(strrchr($f, '.'), 1) == '.pdf'){
                $pdf_arr[] = array(
                    'name' => $f,
                    'path' => $folder_path.$f 
                );
            }
        }
        closedir($dir);
    }
    Qui s'appelerait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $pdf_array = array();
    $pdf_folder = 'fichiers/pdfs/';
    recurseThruFolder($pdf_folder, $pdf_array);
    var_dump($pdf_array);
    Pour éviter le passage par référence du tableau tu peux utiliser le mot clé static et déclarer le tableau à l'intérieur de la fonction, pour le retourner.

    J'éspère ne pas avoir répondu trop à côté de la plaque

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    A priopri open_dir et read_dir posent souci
    a noter que je pointe vers un lecteur reseau en amont de mon root ...

    voici comment je m'en suis sorti
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    $pdf_folder = "T:/SKM/TRANSFERT_JLN/PRODUITHEQUE";
    $pdf_array=array();
      $reg="#.pdf$#i";
    function recurseThruFolders($pdf_folder){
     
    	 $it=scandir($pdf_folder);
    	 global $reg;
    	 global $pdf_array;
     
        foreach($it as $name){
    	    if($name!='.' && $name!='..'){
    				$itpath=$pdf_folder.'/'.$name;
    				if(is_dir($itpath)){
    					//echo 'Repertoire => '.$itpath.'<br />';
    					recurseThruFolders($itpath);
    				}
    				elseif(preg_match($reg,$name)){
    					 //echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".'Fichier => '.$itpath.'<br />';
    					$pdf_array[] = array(
    						'name' => $name,
    						'path' => $itpath.'/'.$name 
    					);
    				}
    		}
        }
    }
    je recupère directement un array avec le nom et le path complet

    Merci thom de m'avoir orienté sur cette voie
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/02/2015, 10h29
  2. Insérer des signets dans un fichier pdf issu d'une fusion de fichiers pdf
    Par aude_alti dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 09/04/2013, 14h38
  3. Afficher une liste de fichier pdf
    Par ledisciple dans le forum Webdesign & Ergonomie
    Réponses: 5
    Dernier message: 28/08/2008, 09h35
  4. [MySQL] réaliser une BD de fichiers PDF
    Par adenov dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/06/2008, 11h32
  5. [ java.net ] récupérer un fichier PDF à partir d'une URL
    Par nico2280 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 10/11/2005, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo