2016-02-21 12 views
5

Mam tysiące dokumentów PDF, które mają 11-15 MB. Mój program mówi, że mój dokument zawiera ponad 100k znaków.Maks. Długość łańcucha Apache Długość osiągnęła

wyjście

Błąd:

Wyjątek w wątku „głównym” org.apache.tika.sax.WriteOutContentHandler $ WriteLimitReachedException: Dokument zawierał więcej niż 100000 znaków, i tak został osiągnięty Twój o ograniczenie . Aby otrzymać pełny tekst dokumentu , zwiększ limit.

Jak mogę zwiększyć limit do 10-15mb?

Znalazłem rozwiązanie, które jest nową klasą fasadową Tiki, ale nie mogłem znaleźć sposobu na zintegrowanie jej z moją.

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

Oto mój kod:

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

wyjściowa:

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

Odpowiedz

12

Zastosowanie

BodyContentHandler handler = new BodyContentHandler(-1); 

wyłączyć limit. Od Javadoc:

Bufor wewnętrzny ciąg jest ograniczony przy danej liczbie znaków. Po osiągnięciu tego limitu zapisu zostanie zgłoszony wyjątek SAXException: .
Parametry: writeLimit - maksymalna liczba znaków do zawierać w łańcuchu, lub -1, aby wyłączyć limit zapisu

+0

dziękuję za odpowiedź. Spróbuję, kiedy będę w domu. Czy nie wyłączasz limitu niebezpiecznego, zamiast go ograniczać? Jeśli użytkownik wyśle ​​10gb dokumentu PDF na śmieci, system zniszczy lub ulegnie awarii. –

+0

@ Ali19033 oczywiście można również po prostu zwiększyć limit, aby po prostu pokryć rozmiar plików PDF. – wero

Powiązane problemy