我在NetBeans IDE(Mac OSX上为7.4)中本地创建了一个小型java测试项目,以便从各种文件中提取内容和元数据。
我试图提取PDF,TXT和PPT,而我收到的唯一元数据是“Content-Type”。我已经尝试过InputStream和新的TikaInputStream,但到目前为止还没有成功。
我已经编译了Tika的1.4版本,并在项目中添加了tika-parsers-1.4.jar和tika-core-1.4.jar。
希望有人能发现明显的
public static void TikaExtract(String fileName) throws Exception {
TikaInputStream tikaStream = TikaInputStream.get(new File(fileName));
ContentHandler textHandler = new BodyContentHandler();
Metadata metadata = new Metadata();
Parser parser = new AutoDetectParser();
ParseContext context = new ParseContext();
parser.parse(tikaStream, textHandler, metadata, context);
//Check if there is anything in tikaStream
out.println("File Length: " + tikaStream.getLength());
out.println("Title: " + metadata.get("title"));
out.println("Content type: " + metadata.get("Content-Type"));
out.println("Author: " + metadata.get("Author"));
out.println("content: " + textHandler.toString());
System.out.println(tikaStream.toString());
tikaStream.close();
}
上述代码的输出(data / sample.pdf作为输入)如下所示:
文件长度:730808
标题:null
内容类型:application / pdf
作者:null
含量:
data / sample.pdf的TikaInputStream
答案 0 :(得分:0)
找到了一个可行的解决方案,虽然可能不是理想的解决方案。
将所有当前库(不使用Maven)替换为tika-server-1.4.jar
请随时发表评论。
答案 1 :(得分:0)
使用tika-server代替tika-core也解决了我的问题。我可以通过Grape使用Maven来做到这一点。
即,只需更换:
@Grab(group='org.apache.tika', module='tika-core', version='1.4')
使用:
@Grab(group='org.apache.tika', module='tika-server', version='1.4')
的工作。