Comment extraire du texte d'un fichier PDF avec Apache PDFBox
Je voudrais extraire le texte d'un fichier PDF avec Apache PDFBox.
J'ai écrit ce code:
PDFTextStripper pdfStripper = null;
PDDocument pdDoc = null;
COSDocument cosDoc = null;
File file = new File(filepath);
PDFParser parser = new PDFParser(new FileInputStream(file));
parser.parse();
cosDoc = parser.getDocument();
pdfStripper = new PDFTextStripper();
pdDoc = new PDDocument(cosDoc);
pdfStripper.setStartPage(1);
pdfStripper.setEndPage(5);
String parsedText = pdfStripper.getText(pdDoc);
System.out.println(parsedText);
Cependant, j'ai eu l'erreur suivante:
Exception in thread "main" java.lang.NullPointerException
at org.apache.fontbox.afm.AFMParser.main(AFMParser.java:304)
J'ai ajouté pdfbox-1.8.5.jar et fontbox-1.8.5.jar pour le chemin de classe.
Modifier
J'ai ajouté System.out.println("program starts");
au début du programme.
J'ai couru, alors j'ai eu le même message d'erreur tel que mentionné ci-dessus et program starts
n'apparaît pas dans la console.
Donc, je pense que j'ai un problème avec le chemin de classe ou de quelque chose.
Merci.
- Probablement votre fichier PDF n'est pas tout à fait valide et rend PDFBox trébucher. Vous pourriez fournir le PDF pour l'inspection.
- Êtes-vous sûr que vous commencer à les corriger
main()
méthode? L'exception semble que vous démarrez lemain()
deorg.apache.fontbox.afm.AFMParser
qui ressemble PDFBox code, pas votre code. - Vous avez raison. Je réinitialiser la configuration d'exécution et maintenant le programme fonctionne. Merci beaucoup, mkl.
Vous devez vous connecter pour publier un commentaire.
J'ai exécuté votre code et cela a fonctionné correctement. Peut-être que votre problème est lié à
FilePath
que vous avez donnée de fichier. J'ai mis mon pdf dans le lecteur C et est codé en dur le chemin d'accès au fichier. Voici mon code:À l'aide de PDFBox 2.0.7, c'est la façon dont je reçois le texte d'un PDF:
L'appeler comme ceci:
Depuis que l'utilisateur oivemaria demandé dans les commentaires:
Vous pouvez utiliser PDFBox dans votre application en l'ajoutant dans vos dépendances, dans
build.gradle
:Voici plus d' sur la gestion de la dépendance à l'aide de Gradle.
Si vous souhaitez conserver le fichier PDF est le format dans l'analyse de texte, donner PDFLayoutTextStripper un essai.
src\resources
dossier. Vous pouvez également utiliser maven dépendance de m2repo mvnrepository.com/artifact/org.apache.pdfbox/pdfboxPdfBox 2.0.3 est un outil de ligne de commande ainsi.
java -jar pdfbox-app-2.0.3.jar ExtractText [OPTIONS] <inputfile> [output-text-file]
Maven dep:
Puis le fucntion pour obtenir le pdf du texte comme une Chaîne de caractères.
Cela fonctionne bien pour extraire des données à partir d'un fichier au format PDF le texte contenu à l'aide de pdfbox 2.0.6