2016-02-21 9 views
5

l ho migliaia di documenti pdf che sono 11-15mb. Il mio programma dice che il mio documento contiene più di 100k caratteri.Apache Tika maxStringLength raggiunto

uscita

Errore:

Exception in thread "main" org.apache.tika.sax.WriteOutContentHandler $ WriteLimitReachedException: Il documento conteneva più di 100000 caratteri, e così il vostro limite richiesto è stato raggiunto . Per ricevere il testo completo del documento , aumentare il limite.

Come posso aumentare il limite a 10-15 MB?

Ho trovato una soluzione che è nuova classe di facciata Tika ma non ho trovato un modo per integrarla con la mia.

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

Ecco il mio codice:

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); 

uscita:

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

risposta

12

Usa

BodyContentHandler handler = new BodyContentHandler(-1); 

per disabilitare il limite. Dalla Javadoc:

Il buffer di stringa interna è delimitata dato numero di caratteri. Se viene raggiunto questo limite di scrittura, allora una SAXException è generata da .
Parametri: writeLimit - numero massimo di caratteri per includono nella stringa, o -1 per disattivare il limite di scrittura

+0

Grazie per la risposta. Lo proverò quando sarò a casa. Non disabilitare il limite pericoloso invece di limitarlo? Se l'utente carica un documento pdf da 10 gb, il sistema distruggerà o si bloccherà. –

+0

@ Ali19033 ovviamente puoi anche semplicemente aumentare il limite in modo da coprire solo le dimensioni dei tuoi PDF. – wero

Problemi correlati