tika提取pdf信息異常


org.apache.tika.sax.WriteOutContentHandler$WriteLimitReachedException: Your document contained more than 100000 characters, and so your requested limit has been reached. To receive the full text of the document, increase your limit. (Text up to the limit is however available).
at org.apache.tika.sax.WriteOutContentHandler.characters(WriteOutContentHandler.java:141)
at org.apache.tika.sax.ContentHandlerDecorator.characters(ContentHandlerDecorator.java:146)
at org.apache.tika.sax.xpath.MatchingContentHandler.characters(MatchingContentHandler.java:85)
at org.apache.tika.sax.ContentHandlerDecorator.characters(ContentHandlerDecorator.java:146)
at org.apache.tika.sax.ContentHandlerDecorator.characters(ContentHandlerDecorator.java:146)
at org.apache.tika.sax.SafeContentHandler.access$001(SafeContentHandler.java:46)
at org.apache.tika.sax.SafeContentHandler$1.write(SafeContentHandler.java:82)
at org.apache.tika.sax.SafeContentHandler.filter(SafeContentHandler.java:140)
at org.apache.tika.sax.SafeContentHandler.characters(SafeContentHandler.java:287)
at org.apache.tika.sax.XHTMLContentHandler.characters(XHTMLContentHandler.java:278)
at org.apache.tika.sax.XHTMLContentHandler.characters(XHTMLContentHandler.java:305)
at org.apache.tika.parser.pdf.PDF2XHTML.writeString(PDF2XHTML.java:398)
at org.apache.pdfbox.util.PDFTextStripper.writeString(PDFTextStripper.java:866)
at org.apache.pdfbox.util.PDFTextStripper.writeLine(PDFTextStripper.java:1896)
at org.apache.pdfbox.util.PDFTextStripper.writePage(PDFTextStripper.java:744)
at org.apache.pdfbox.util.PDFTextStripper.processPage(PDFTextStripper.java:461)
at org.apache.pdfbox.util.PDFTextStripper.processPages(PDFTextStripper.java:385)
at org.apache.pdfbox.util.PDFTextStripper.writeText(PDFTextStripper.java:344)
at org.apache.tika.parser.pdf.PDF2XHTML.process(PDF2XHTML.java:130)
at org.apache.tika.parser.pdf.PDFParser.parse(PDFParser.java:159)

在使用apache tika提取pdf信息時,報以上錯誤。根據錯誤信息提示,可能讀取超過請求限制(10萬字)。

我的代碼如下:

		Parser parser = new PDFParser();
		//parser.
		BodyContentHandler handler = new BodyContentHandler();
		Metadata metadata = new Metadata();
		InputStream stream = null;
		try {
			
			stream = new FileInputStream(new File("1.pdf"));
			parser.parse(stream, handler, metadata, new ParseContext());
			
			 for (String name : metadata.names()) {
                 System.out.println(name + ":\t" + metadata.get(name));
             }
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (TikaException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				stream.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

  對讀取字數限制,可能在某個構造函數里我沒有傳入最大限制,而使用了默認的十萬字。檢查一下上面的代碼,我注意到了

BodyContentHandler的構造函數:
org.apache.tika.sax.BodyContentHandler.BodyContentHandler(int writeLimit)

  看樣子有關系。修改一下構造函數的數字為:10*1024*1024(這個數字有pdf文檔大小決定)。

重新調試程序,即可獲得pdf的元數據信息如下:

  

dc:subject:	
meta:save-date:	2014-07-22T21:02:38Z
subject:	PostgreSQL 9.3 Documentation
Author:	The PostgreSQL Global Development Group
dcterms:created:	2014-07-22T20:55:33Z
date:	2014-07-22T21:02:38Z
creator:	The PostgreSQL Global Development Group
Creation-Date:	2014-07-22T20:55:33Z
title:	PostgreSQL 9.3 Documentation
trapped:	False
meta:author:	The PostgreSQL Global Development Group
created:	Wed Jul 23 04:55:33 CST 2014
meta:keyword:	
cp:subject:	PostgreSQL 9.3 Documentation
dc:format:	application/pdf; version=1.4
PTEX.Fullbanner:	This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian) kpathsea version 6.1.0
xmp:CreatorTool:	LaTeX with hyperref package
Keywords:	
dc:title:	PostgreSQL 9.3 Documentation
Last-Save-Date:	2014-07-22T21:02:38Z
meta:creation-date:	2014-07-22T20:55:33Z
dcterms:modified:	2014-07-22T21:02:38Z
dc:creator:	The PostgreSQL Global Development Group
pdf:PDFVersion:	1.4
Last-Modified:	2014-07-22T21:02:38Z
modified:	2014-07-22T21:02:38Z
xmpTPg:NPages:	2861
pdf:encrypted:	false
producer:	pdfTeX-1.40.13; modified using iText® 5.1.3 ©2000-2011 1T3XT BVBA
Content-Type:	application/pdf

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM