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

API standards et tierces Java Discussion :

Petit souci pour utilisation conversion de PDF


Sujet :

API standards et tierces Java

  1. #1
    Membre du Club
    Petit souci pour utilisation conversion de PDF
    Bonsoir a tous,

    je suis en train de secher sur la création d'un fichier texte depuis un document PDF.
    Mon final étant cette création de fichier texte bref.

    dans un premier temps suite à la lecture du pdf qui se présente sous forme de tableau (l-cf. ma capture d'écran) j'obtiens un premier .txt
    dans ce fichier texte, on constate que les coordonnées au lieu d'etre a la ligne se trouve collée a la ligne précédente.(mon premier souci )

    in fine de ce premier texte je souhaite extraire le nom / les coordonnées / les Hauteurs minimales de survol

    pour cela j'utilise le code suivant

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package pdfclasses;
     
    /**
     *
     * @author xxxxx
     */
     
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Scanner;
     
    public class test {
     
        /**
         * @param args the command line arguments
         * @throws java.io.IOException
         */
     
        public static void main(String[] args) throws com.itextpdf.io.IOException, IOException {
            PDFManager pdfManager = new PDFManager();
            pdfManager.setFilePath("/Users/xxxxx/Desktop/FR-ENR-5.7-fr-FR.pdf");
     
             File AIRAC = new File("/Users/xxxxx/Desktop/AIRAC.txt") ;
             String text = pdfManager.toText();
             File AIRAC2 = new File("/Users/xxxxx/Desktop/AIRAC-2.txt") ;
     
             try (PrintWriter out = new PrintWriter(new FileWriter(AIRAC))) {
             out.write(text) ; //écris dans le fichier
             out.println();//fais un retour à la ligne dans le fichier
             out.close();//Ferme le flux du fichier, sauvegardant ainsi les données.
             } catch (IOException e) {
             e.printStackTrace();
            }
            Scanner in = new Scanner(AIRAC); //scanne le fichier AIRAC
            in.useDelimiter("FIR");
            in.useDelimiter("ASFC");
            while(in.hasNextLine()) {
            String line = in.next();
             System.out.println(line); // renvoie le resultat du delimiteur dans la console
     
            try (PrintWriter out = new PrintWriter(new FileWriter(AIRAC2))) {
             out.write(line) ; //écris  dans le fichier AIRAC2
             out.println();//fais un retour à la ligne dans le fichier
             out.close();//Ferme le flux du fichier, sauvegardant ainsi les données.
             }catch (IOException e) {
             e.printStackTrace();
            }
            }
        }
     
    }


    le resultat de mon fichier 2 ne correspond pas a ce qui s'affiche dans la console qui elle me renvoie la globalité

    auriez vous une idée svp ?

    par avance merci pour votre aide

  2. #2
    Modérateur

    Salut,

    C'est parce que dans la boucle qui lit les lignes via le Scanner, à chaque ligne, tu crées un nouveau fichier dans lequel tu écris la ligne courante. Au final, tu te retrouves avec uniquement forcément la dernière ligne seulement. On pourrait s'en sortir en ouvrant le FileWriter en mode append (new FileWriter(AIRAC2,true)), en prenant soin de supprimer le fichier avant (sinon avec plusieurs exécution du programme, tu va cumuler). Mais ce serait plus logique d'ouvrir le fichier une fois :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try (PrintWriter out = new PrintWriter(new FileWriter(AIRAC2))) {
     
        while(in.hasNextLine()) {
            String line = in.next();
             System.out.println(line); // renvoie le resultat du delimiteur dans la console
             out.println(line) ; //écris  dans le fichier AIRAC2
        }
     
     }catch (IOException e) {
             e.printStackTrace();
     }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.