2011-07-11 115 views

回答

5

這是lucid

InputStream input = new FileInputStream(new File(resourceLocation)); 
ContentHandler textHandler = new BodyContentHandler(); 
Metadata metadata = new Metadata(); 
PDFParser parser = new PDFParser(); 
parser.parse(input, textHandler, metadata); 
input.close(); 
out.println("Title: " + metadata.get("title")); 
out.println("Author: " + metadata.get("Author")); 
out.println("content: " + textHandler.toString()); 

而不是創建一個PDFParser可以使用Tika的AutoDetectParser來自動處理文件的DIFF類型:

Parser parser = new AutoDetectParser(); 
6

檢查documentation - 是的,你可以。

java -jar tika-app-0.9.jar -t http://stackoverflow.com/questions/6656849/extract-the-text-from-url-using-tika 

會告訴你此頁面上的文本。

+0

如果我需要在Java代碼中使用這個並保存URL文本在一個文本文件。然後還可以..?我不使用maven。我想在java代碼中使用這個。 – ferhan

+1

描述如何在ant中使用tika,就在如何在Maven中使用它的描述之下,並且剛好在命令行工具的指令之上。如果您需要一些關於如何嵌入它的靈感,我肯定有網站上的信息,並且總是有命令行工具的來源。 – fvu

+0

這將是一個很好的例子在文檔中... – topchef

1

從本地文件不是從URL中提取內容使用此代碼:

byte[] raw = content.getContent(); 
    ContentHandler handler = new BodyContentHandler(); 
    Metadata metadata = new Metadata(); 
    Parser parser = new AutoDetectParser(); 
    parser.parse(new ByteArrayInputStream(raw), handler, metadata, new ParseContext()); 
    LOG.info("content: " + handler.toString()); 
+0

你也可以使用TikaInputStream.get(byte [])來建立InputStream – Gagravarr

+0

謝謝,,我不知道爲什麼它給了我空的字符串handler.toString() ! –

3

是的,你可以做到這一點。這是代碼。該代碼使用Apache http client

HttpGet httpget = new HttpGet("http://url.here"); 
    HttpEntity entity = null; 
    HttpClient client = new DefaultHttpClient(); 
    HttpResponse response = client.execute(httpget); 
    entity = response.getEntity(); 
    if (entity != null) { 
     InputStream instream = entity.getContent(); 
     BodyContentHandler handler = new BodyContentHandler(); 
     Metadata metadata = new Metadata(); 
     Parser parser = new AutoDetectParser(); 
     parser.parse(instream, handler, metadata, new ParseContext()); 
     String plainText = handler.toString(); 
     FileWriter writer = new FileWriter("/scratch/cache/output.txt"); 
     writer.write(plainText); 
     writer.close(); 
     System.out.println("done"); 
    }