2016-02-21 8 views
5

Ich habe Tausende von PDF-Dokumenten, die 11-15 MB sind. Mein Programm sagt, dass mein Dokument mehr als 100k Zeichen enthält.Apache Tika maxStringLength erreicht

Fehlerausgang:

Exception in thread "main" org.apache.tika.sax.WriteOutContentHandler $ WriteLimitReachedException: Ihr Dokument mehr als 100.000 Zeichen enthalten, und so Ihre angefordert Grenze erreicht ist . Um den vollständigen Text des Dokuments zu erhalten, erhöhen Sie Ihr Limit.

Wie kann ich das Limit auf 10-15mb erhöhen?

Ich fand eine Lösung, die neue Tika Fassadenklasse ist, aber ich konnte keinen Weg finden, es mit meinen zu integrieren.

Tika tika = new Tika(); 
    tika.setMaxStringLength(10*1024*1024); 

Hier ist mein Code:

BodyContentHandler handler = new BodyContentHandler(); 
    Metadata metadata = new Metadata(); 
    String location = "C:\\Users\\Laptop\\Dropbox\\MainTextbookTrappe2ndEd.pdf"; 
    FileInputStream inputstream = new FileInputStream(location); 
    ParseContext pcontext = new ParseContext(); 
    PDFParser pdfparser = new PDFParser(); 
    pdfparser.parse(inputstream, handler, metadata, pcontext); 

Ausgang:

System.out.println("Content of the PDF :" + pcontext); 

Antwort

12

Verwenden

BodyContentHandler handler = new BodyContentHandler(-1); 

die Grenze zu deaktivieren. Von der Javadoc:

Der interne String-Puffer wird auf die angegebene Anzahl von Zeichen begrenzt. Wenn dieses Schreiblimit erreicht ist, wird eine SAXException ausgelöst.
Parameter: writeLimit - maximale Anzahl von Zeichen zu umfassen im String oder -1 die Schreibgrenze

+0

Sie deaktivieren für die Antwort danken. Ich werde es versuchen, wenn ich zu Hause bin. Sperrt das Limit nicht gefährlich, anstatt es zu begrenzen? Wenn der Benutzer ein 10gb-Papierkorb-Dokument hochlädt, zerstört das System oder stürzt ab. –

+0

@ Ali19033 natürlich können Sie auch einfach das Limit erhöhen, so dass Sie nur die Größe Ihrer PDFs abdecken. – wero