2017-08-15 1 views
1

J'utilise PDF Box pour la première fois et je l'utilise pour extraire du texte d'une certaine région du PDF. J'ai testé mon programme sur 50 documents et il a échoué sur 4 documents et m'a donné cette exception. Quelqu'un peut-il donner plus de lumière à ce sujet? Ou sait ce qui provoque cela?Exception d'extraction de texte Pdfbox

code

PDFTextStripperByArea stripper = new PDFTextStripperByArea(); 
stripper.setSortByPosition(true); 
Rectangle rect = new Rectangle(0 , 58 , 612 , 657); 
stripper.addRegion("region", rect); 
List allPages = document.getDocumentCatalog().getAllPages(); 

for(i=0 ; i<document.getNumberOfPages() ; i++) 
{ 
    stripper.extractRegions((PDPage)allPages.get(i)); 
    FileText += stripper.getTextForRegion("region"); 
} 

System.out.println(FileText); 

Message d'erreur

Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract! 
    at java.util.TimSort.mergeHi(TimSort.java:899) 
    at java.util.TimSort.mergeAt(TimSort.java:516) 
    at java.util.TimSort.mergeForceCollapse(TimSort.java:457) 
    at java.util.TimSort.sort(TimSort.java:254) 
    at java.util.Arrays.sort(Arrays.java:1512) 
    at java.util.ArrayList.sort(ArrayList.java:1454) 
    at java.util.Collections.sort(Collections.java:175) 
    at org.apache.pdfbox.util.PDFTextStripper.writePage(PDFTextStripper.java:554) 
    at org.apache.pdfbox.util.PDFTextStripperByArea.writePage(PDFTextStripperByArea.java:190) 
    at org.apache.pdfbox.util.PDFTextStripper.processPage(PDFTextStripper.java:446) 
    at org.apache.pdfbox.util.PDFTextStripperByArea.extractRegions(PDFTextStripperByArea.java:153) 
    at pdf.box.App.main(App.java:68) 

L'un des fichiers qui donne cette exception: https://files.fm/u/6srrrzxq

+1

Quelle version de PDFBox utilisez-vous? Ce bug a été corrigé à la fin de l'année 2015 (https://issues.apache.org/jira/browse/PDFBOX-1512) Il est lié à l'utilisation de jdk7 (ou supérieur). –

+0

@Tilman "Il est lié à l'utilisation de jdk7" - bien, à proprement parler, il est dû à un comparateur qui n'adhère pas au contrat comparateur. Même si java 6 ne s'est pas plaint, c'était un bug même alors. – mkl

Répondre

0

Switched une nouvelle version ... son travail maintenant ... Merci!

+1

Vous avez écrit "J'utilise PDF Box pour la première fois" - donc je me demande, quel site vous a demandé d'utiliser une version qui a au moins 2 ans? –

+0

Copié l'ancienne dépendance car elle était en haut des résultats –