2016-02-21 62 views
5

l擁有數千個11-15mb的pdf文檔。我的程序說我的文檔包含超過10萬個字符。Apache Tika maxStringLength已達到

錯誤輸出:在線程「主要」 org.apache.tika.sax.WriteOutContentHandler $ WriteLimitReachedException

例外: 您的文檔包含超過10個字符,所以你 要求已達到極限。要獲得 文檔的全文,請增加您的限制。

我該如何將限制增加到10-15mb?

我發現了一個新的Tika門面類的解決方案,但我找不到一種方法將其與我的整合。

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

這裏是我的代碼:

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

輸出:

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

回答

12

使用

BodyContentHandler handler = new BodyContentHandler(-1); 

禁用限制。 從Javadoc

內部字符串緩衝區是在 字符給定數目界定。如果達到此寫入限制,則引發一個SAXException 。
參數:writeLimit - 字符 的最大數量在字符串中包含或-1禁用寫極限

+0

謝謝你的答案。當我在家時,我會嘗試它。是不是禁用極限危險而不是限制它?如果用戶上傳10gb垃圾pdf文檔,系統將銷燬或崩潰。 –

+0

@ Ali19033當然,您也可以簡單地增加限制,以便覆蓋PDF文件的大小。 – wero