Comment lire un fichier PDF en Java

Femme travaillant dans un bureau

Crédit d'image : Pixland/Pixland/Getty Images

Il n'est pas difficile de lire des fichiers PDF en Java en utilisant des bibliothèques facilement disponibles. La lecture de fichiers PDF vous permet d'écrire des programmes Java capables de traiter le texte de ces fichiers. Une option pour lire les fichiers PDF est la bibliothèque PDFBox gratuite et open source disponible auprès d'Apache. La plate-forme de développement Java Eclipse facilite ce travail et gère les bibliothèques que vous allez télécharger. Vous devez être familiarisé avec la programmation Java pour utiliser ces bibliothèques Java.

Rassembler les bibliothèques nécessaires

Étape 1

Téléchargez le JDK Java sur le site Web de Sun. Il s'agit d'un fichier exécutable que vous pouvez installer sur votre système en l'exécutant. Des versions sont disponibles pour Windows, Mac et Linux. Cliquez sur le bouton rouge "Télécharger". Enregistrez un fichier appelé "jdk-6uxx-windows-xxx.exe" lorsque vous y êtes invité. Enregistrez ce fichier puis double-cliquez dessus pour lancer le programme d'installation Java.

Vidéo du jour

Étape 2

Téléchargez le système de développement Eclipse et décompressez-le dans un répertoire de niveau supérieur. Sélectionnez "Eclipse IDE pour les développeurs Java". Cela lancera le téléchargement de "eclipse-java-galileo-SR2-win32.zip". Double-cliquez sur le fichier pour le décompresser une fois le téléchargement terminé. Sélectionnez l'emplacement du répertoire racine "C:" pour décompresser Eclipse.

Étape 3

Démarrez Eclipse en double-cliquant sur "eclipse.exe" dans le répertoire que vous venez de créer en décompressant le fichier zip eclipse. Dans le système Eclipse, créez un projet nommé "PrintPdf". Sélectionnez "Fichier" puis "Nouveau" puis "Projet Java". Tapez le nom du projet "PrintPdf" dans la boîte de dialogue qui apparaît. Assurez-vous que le bouton radio est sélectionné qui dit "Créer des dossiers séparés pour les fichiers source et de classe." Cliquez sur "Terminer".

Étape 4

Créez un dossier "lib" dans votre projet "PrintPdf". Faites un clic droit sur le projet "PrintPdf" et sélectionnez "Nouveau" puis "Dossier". Entrez le nom "lib" et cliquez sur "Terminer".

Étape 5

Téléchargez Apache "PDFBox.jar" depuis le site Apache et copiez-le dans le répertoire lib que vous venez de créer. Sur la même page Web, téléchargez le fichier « fontbox-nn.jar » et le fichier « jempbox-nn.jar ». Dans chaque cas, lorsque vous cliquez sur ce fichier jar, cela vous amènera à une page où vous pourrez sélectionner l'un des nombreux serveurs pouvant fournir ce fichier. Choisissez chacun d'eux et chaque fichier jar sera téléchargé. Copiez chaque fichier jar dans le répertoire lib que vous venez de créer.

Étape 6

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

Étape 7

Téléchargez le package Apache Commons Discovery sous forme de fichier zip. Double-cliquez sur le fichier zip, sélectionnez le "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". Assurez-vous que tous les fichiers jar que vous avez ajoutés sont affichés.

Étape 9

Faites un clic droit sur le projet PrintPDF et sélectionnez "Propriétés". Sélectionnez "Java Build Path" et sélectionnez l'onglet "Bibliothèques". Cliquez sur "Ajouter des pots" et allez dans le répertoire lib que vous venez de créer, et ajoutez "commons-logging-nn.jar", "fontbox-nn.jar", "jempbox-nn.jar", "log4j-nn.jar, " et " pdfbox-nn.jar. " Cliquez sur "OK".

Écrire le code pour lire les PDF

Étape 1

Faites un clic droit sur le dossier "src" de votre projet "PrintPDF" et sélectionnez "Nouveau" et le "Package". Créez un package en utilisant n'importe quel nom significatif. Par exemple, nommez le package « com.pdf.util ». Cliquez sur "Terminer".

Étape 2

Faites un clic droit sur le nom du package que vous venez de créer et sélectionnez "Nouveau", puis "Classe". Créer une classe nommée "PDFTextParser." Assurez-vous de cocher la case marquée "public static void main..." afin que le système crée un méthode "principale".

Étape 3

Modifiez la méthode "main" dans la classe "PDFTextParser" pour qu'elle contienne le code suivant :

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

Notez que le fichier que vous souhaitez imprimer est précisé dans le constructeur de PDFTextParser ("data/JavaPDF.pdf"). Cela pourrait tout aussi bien être un argument de ligne de commande :

PDFTextParser pdf = nouveau PDFTextParser (argv[0])

ALLER

ou sélectionné à partir d'une interface graphique.

Il crée une instance de la classe PDFTextParser, puis appelle sa méthode "getParsedText".

Étape 4

Insérez le code suivant juste en dessous de la ligne de classe supérieure « classe publique PDFTextParser » qui a été créée pour vous.

analyseur privé PDFParser = null GO

// Extraire le texte du document PDF. public PDFTextParser (String fileName) { File file = new File (fileName)

GO if (!file.isFile()) { System.err.println("File " + fileName + " n'existe pas.") GO } //Configurer l'instance de l'analyseur PDF essayer { parser = new PDFParser (nouveau FileInputStream (fichier)) GO } catch (IOException e) { System.err.println("Impossible d'ouvrir le PDF Analyseur. " + e.getMessage()) GO } } // chaîne publique getParsedText() { PDDocument pdDoc = null GO COSDocument cosDoc = null;
Chaîne parsedText = null; ALLER

essayez { PDFTextStripper pdfStripper = nouveau PDFTextStripper()

GO parser.parse() GO cosDoc = parser.getDocument() GO pdDoc = nouveau PDDocument (cosDoc) GO

// obtenir la liste de toutes les pages List< PDPage> list = pdDoc.getDocumentCatalog().getAllPages()

ALLER

//notez que vous pouvez imprimer toutes les pages de votre choix //en choisissant différentes valeurs pour la page de début et de fin pdfStripper.setStartPage (1); // basé sur la longueur int = list.size(); //nombre total de pages pdfStripper.setEndPage (longueur); //dernière page //récupérer le texte des pages sélectionnées parsedText = pdfStripper.getText (pdDoc)

GO } catch (IOException e) { System.err .println("Une exception s'est produite lors de l'analyse du document PDF." + e.getMessage()) GO } finalement { try { if (cosDoc != null) cosDoc.close() GO if (pdDoc != null) pdDoc.close() GO } catch (IOException e) { e.printStackTrace() GO } }
return parsedText GO }

Étape 5

Exécutez le programme. Faites un clic droit sur la classe PDFTextParser et cliquez sur "Exécuter en tant que", puis sur "Programme Java". Le programme doit s'exécuter et imprimer le contenu textuel du fichier PDF que vous avez entré dans votre code.

Supprimer le message d'erreur de démarrage de Log4j

Étape 1

Créez un fichier de configuration pour supprimer le message d'erreur log4j du système de journalisation Java créé lorsqu'il ne trouve pas de fichier de configuration au démarrage. Faites un clic droit sur le dossier " src " du projet PrintPDF et sélectionnez " Nouveau " puis " Fichier ". Nommez le fichier "log4j.properties" Eclipse affichera un écran vide pour ce nouveau fichier.

Étape 2

Collez les lignes suivantes dans l'écran vide représentant le fichier "log4j.properties".

Étape 3

Enregistrez le fichier "log4j.properties". La présence de ce fichier dans le répertoire "src" de niveau supérieur supprimera le message de démarrage log4j et tous les messages de journalisation triviaux. Le système log4j n'imprimera que les erreurs réelles.

Pointe

Il existe également un certain nombre de packages commerciaux que vous pouvez utiliser pour extraire du texte à partir de fichiers PDF, mais ils ne sont pas bon marché.