>> Technologie Électronique >  >> Maison intelligente >> Vie connectée

Comment lire un fichier PDF en Java

Il n'est pas difficile de lire des fichiers PDF en Java en utilisant des bibliothèques facilement disponibles. La lecture de fichiers PDF permet d'écrire des programmes Java qui traitent le texte de ces fichiers. Une option est la bibliothèque PDFBox, gratuite et open-source, disponible chez Apache. La plateforme de développement Java Eclipse facilite ce travail et gère les bibliothèques à télécharger. Vous devez être familier avec la programmation Java pour utiliser ces bibliothèques.

Rassembler les bibliothèques nécessaires

Étape 1

Téléchargez le Java JDK depuis le site de Sun. C'est un fichier exécutable installable en le lançant. Versions pour Windows, Mac, Linux. Cliquez sur le bouton rouge « Download ». Enregistrez le fichier « jdk-6uxx-windows-xxx.exe » quand demandé. Enregistrez et double-cliquez pour lancer l'installateur Java.

Étape 2

Téléchargez le système de développement Eclipse et décompressez-le dans un répertoire de premier niveau. Sélectionnez « Eclipse IDE for Java Developers ». Cela téléchargera « eclipse-java-galileo-SR2-win32.zip ». Double-cliquez pour décompresser après téléchargement. Sélectionnez le répertoire racine « C: » pour décompresser Eclipse.

Étape 3

Démarrez Eclipse en double-cliquant sur « eclipse.exe » dans le répertoire créé. Dans Eclipse, créez un projet nommé « PrintPdf ». Sélectionnez « Fichier » puis « Nouveau » puis « Projet Java ». Tapez « PrintPdf » dans la boîte de dialogue. Assurez-vous que le bouton radio « Créer des dossiers séparés pour sources et classes » est sélectionné. Cliquez sur « Terminer ».

Étape 4

Créez un dossier « lib » dans votre projet « PrintPdf ». Clic droit sur le projet « PrintPdf », « Nouveau », « Dossier ». Entrez « lib » et cliquez « Terminer ».

Étape 5

Téléchargez « PDFBox.jar » d'Apache et copiez-le dans le répertoire lib créé. Sur la même page, téléchargez « fontbox-nn.jar » et « jempbox-nn.jar ». Pour chacun, cliquez sur le fichier jar, choisissez un serveur miroir, téléchargez. Copiez chaque jar dans le répertoire lib.

Étape 6

Téléchargez le package Apache log4j.jar de la même façon et copiez log4j.jar dans le répertoire. La bibliothèque PDFBox utilise cette bibliothèque de journalisation Apache, donc ce fichier doit être présent.

Étape 7

Téléchargez le package Apache Commons Discovery comme fichier zip. Double-cliquez sur le zip, sélectionnez « commons-discovery-nn.jar » et extrayez-le dans le répertoire lib.

Étape 8

Dans Eclipse, cliquez sur le répertoire « lib » et appuyez sur « F5 ». Vérifiez que tous les fichiers jar ajoutés sont affichés.

Étape 9

Clic droit sur le projet PrintPDF, « Propriétés ». Sélectionnez « Java Build Path », onglet « Libraries ». Cliquez « Add jars », allez au répertoire lib, ajoutez « commons-logging-nn.jar », « fontbox-nn.jar », « jempbox-nn.jar », « log4j-nn.jar », « pdfbox-nn.jar ». Cliquez « OK ».

Écrire le code pour lire les PDFs

Étape 1

Clic droit sur le dossier « src » de votre projet « PrintPDF », « Nouveau », « Package ». Créez un package avec un nom significatif, ex: « com.pdf.util ». Cliquez « Terminer ».

Étape 2

Clic droit sur le package créé, « Nouveau », « Classe ». Créez une classe nommée « PDFTextParser ». Cochez « public static void main... » pour que le système crée une méthode « main ».

Étape 3

Modifiez la méthode « main » dans la classe « PDFTextParser » pour contenir le code suivant :

public static void main(String args[]) {
    PDFTextParser pdf = new PDFTextParser("data/javaPDF.pdf");
    // Afficher les résultats
    System.out.println(pdf.getParsedText());
}

Le fichier à imprimer est spécifié dans le constructeur PDFTextParser (« data/JavaPDF.pdf »). Cela pourrait aussi être un argument de ligne de commande : PDFTextParser pdf = new PDFTextParser(argv[0]) ou sélectionné via une interface graphique. Cela crée une instance de PDFTextParser et appelle sa méthode « getParsedText ».

Étape 4

Insérez le code suivant juste sous la ligne de classe « public class PDFTextParser » :

private PDFParser parser = null;

// Extract text from PDF Document
public PDFTextParser(String fileName) {
    File file = new File(fileName);
    if (!file.isFile()) {
        System.err.println("File " + fileName + " does not exist.");
    }
    // Set up instance of PDF parser
    try {
        parser = new PDFParser(new FileInputStream(file));
    } catch (IOException e) {
        System.err.println("Unable to open PDF Parser. " + e.getMessage());
    }
}

//-------------------------------
public String getParsedText() {
    PDDocument pdDoc = null;
    COSDocument cosDoc = null;
    String parsedText = null;

    try {
        PDFTextStripper pdfStripper = new PDFTextStripper();
        parser.parse();
        cosDoc = parser.getDocument();
        pdDoc = new PDDocument(cosDoc);

        // Get list of all pages
        List<PDPage> list = pdDoc.getDocumentCatalog().getAllPages();

        // Note: you can print any pages by choosing different start/end values
        pdfStripper.setStartPage(1); // 1-based
        int length = list.size(); // total pages
        pdfStripper.setEndPage(length); // last page
        // Get text for selected pages
        parsedText = pdfStripper.getText(pdDoc);
    } catch (IOException e) {
        System.err.println("An exception occurred in parsing the PDF Document." + e.getMessage());
    } finally {
        try {
            if (cosDoc != null) cosDoc.close();
            if (pdDoc != null) pdDoc.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return parsedText;
}

Étape 5

Exécutez le programme. Clic droit sur la classe PDFTextParser, « Exécuter en tant que » → « Application Java ». Le programme devrait s'exécuter et afficher le contenu textuel du fichier PDF indiqué dans votre code.

Supprimer le message d'erreur de démarrage Log4j

Étape 1

Créez un fichier de configuration pour supprimer le message d'erreur de démarrage du système de journalisation Java log4j quand il ne trouve pas de fichier de configuration au démarrage. Clic droit sur le dossier « src » du projet PrintPDF, « Nouveau », « Fichier ». Nommez le fichier « log4j.properties ». Eclipse affichera un écran vide.

Étape 2

Collez les lignes suivantes dans l'écran vide du fichier « log4j.properties » :

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=WARN, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

Étape 3

Enregistrez le fichier « log4j.properties ». Sa présence dans le répertoire « src » de premier niveau supprimera le message de démarrage log4j et les messages de journalisation triviaux. Le système log4j n'affichera que les erreurs réelles.

Astuce

Il existe aussi des packages commerciaux pour extraire du texte de PDF, mais ils ne sont pas bon marché.

Vie connectée