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

Documents Java Discussion :

OutOfMemoryError avec PDFBox


Sujet :

Documents Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 2
    Par défaut OutOfMemoryError avec PDFBox
    Bonjour tout le monde

    J'ai un gros problème avec un moteur de recherche que j'ai développé avec Lucene pour un de mes sites web.

    Il y a plus de 8000 PDF à indexer et pour la plupart d'entre eux ça fonctionne bien. Mais pour quelques uns j'ai une "OutOfMemoryError" qui a pour conséquence de planter mon indexation. Cette erreur se produit avec environ 10 des PDF. Mais quand j'essaye d'indexer uniquement ces 10 là ça marche !!

    Voici mon code qui est assez simple

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    /** 
    * Get the text content of a PDF file 
    */ 
    public String getText(File document) { 
         StringBuffer text = new StringBuffer(); 
         FileInputStream in = null; 
         StringWriter output = null; 
         PDDocument doc = null; 
         try { 
              if (document.length() < tailleLimiteLong*1024*1024){ 
                   in = new FileInputStream(document); 
                   PDFParser parser = new PDFParser(in); 
                   parser.parse(); 
                   doc = parser.getPDDocument(); 
                   PDFTextStripper stripper = new PDFTextStripper(); 
                   stripper.setStartPage(0); 
                   output = new StringWriter(); 
                   stripper.writeText(doc, output); 
                   text = output.getBuffer(); 
              } else { 
                   logger.error("File is too big"); 
              } 
         } catch (Exception e) { 
              logger.error("Error during indexation : " + document.getPath(),e); 
         } 
     
         try { 
              if (in!=null) in.close(); 
         } catch (Exception e) { 
              logger.error("Problem when closing FileInputStream"); 
         } 
     
         try { 
              if (output!=null) output.close(); 
         } catch (Exception e) { 
              logger.error("Problem when closing StringWriter"); 
         } 
     
         try { 
              if (doc!=null) doc.close(); 
         } catch (Exception e) { 
              logger.error("Problem when closing PDDocument"); 
         } 
     
         return text.toString(); 
    }
    Quelqu'un a t'il déjà rencontré le même problème ?

    Merci d'avance pour votre aide.

    Eric

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Salut,

    Je ne sais pas si ça peut avoir un impact, mais tu ne fermes pas tes flux (FileInputStream et StringWriter).

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 2
    Par défaut
    La partie de code suivante ferme les flux il me semble, non ?

    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
     
    try { 
              if (in!=null) in.close(); 
         } catch (Exception e) { 
              logger.error("Problem when closing FileInputStream"); 
         } 
     
         try { 
              if (output!=null) output.close(); 
         } catch (Exception e) { 
              logger.error("Problem when closing StringWriter"); 
         } 
     
         try { 
              if (doc!=null) doc.close(); 
         } catch (Exception e) { 
              logger.error("Problem when closing PDDocument"); 
         }

  4. #4
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Ah bah voui ! J'avais pas vu (indentation is my friend)

    Bon bah voilà, ...

  5. #5
    Membre expérimenté Avatar de sewatech
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Bonjour,

    As-tu un message complémentaire avec ton erreur, cela peut permettre de mieux comprendre la nature du OutOfMemory (Heap, Stack,...) ?

Discussions similaires

  1. convertir Pdf à une image avec PDFBox
    Par java_debutant dans le forum Documents
    Réponses: 2
    Dernier message: 08/06/2009, 17h16
  2. Extraire pdf avec PdfBox
    Par nadabb dans le forum C#
    Réponses: 0
    Dernier message: 08/06/2009, 16h50
  3. Extraire le texte d'un pdf avec PdfBox en C#
    Par nadabb dans le forum C#
    Réponses: 10
    Dernier message: 28/05/2009, 21h00
  4. Gérer les exposant avec PDFBox
    Par vmal dans le forum Documents
    Réponses: 1
    Dernier message: 02/05/2007, 10h49
  5. OutOfMemoryError avec gros fichier
    Par zizou771 dans le forum Langage
    Réponses: 48
    Dernier message: 04/10/2006, 15h32

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