7

我正在使用 Apache Tika 对各种文档(ODS、MS office、pdf)进行简单处理。我必须至少得到:

word count, author, title, timestamps, language etc.

这并不容易。我的策略是对 6 种类型的文档使用模板方法模式,我首先找到文档的类型,并在此基础上单独处理它。

我知道 apache tika 应该消除对这个的需要,但是文档格式有很大不同,对吧?

例如

InputStream input = this.getClass().getClassLoader().getResourceAsStream(doc);
ContentHandler textHandler = new BodyContentHandler();
Metadata metadata = new Metadata();
Parser parser = new OfficeParser();
parser.parse(input, textHandler, metadata, new ParseContext());
input.close();

for(String s : metadata.names()) {
    System.out.println("Metadata name : "  + s);
}

我尝试对 ODS、MS office、pdf 文档执行此操作,但元数据差异很大。MSOffice 界面列出了 MS 文档的元数据键和一些Dublic Core元数据列表。但是应该如何实现这样的应用程序呢?

可以请有经验的人分享他的经验吗?谢谢

4

1 回答 1

6

通常,解析器应该为所有文档格式的相同事物返回相同的元数据键。但是,有些类型的元数据只出现在某些文件类型中,因此您不会从其他文件类型中获取这些元数据。

您可能只想使用 AutoDetectParser,如果您需要对之后基于 mimetype 的元数据句柄做任何特殊处理,例如

Metadata metadata = new Metadata();
metadata.set(Metadata.RESOURCE_NAME_KEY, filename);
ParseContext context = new ParseContext();

Parser parser = new AutoDetectParser();
parser.parse(input, textHandler, metadata, new ParseContext());

if(metadata.get(CONTENT_TYPE).equals("application/pdf")) {
   // Do something special with the PDF metadata here
}
于 2011-03-31T21:56:57.870 回答