我正在尝试使用Apache Tika解析RTF文件。在文件内部有一个包含多个列的表。
问题是解析器在没有任何信息的情况下写出结果,而该值是哪一列。
我现在正在做的是:
AutoDetectParser adp = new AutoDetectParser(tc);
Metadata metadata = new Metadata();
String mimeType = new Tika().detect(file);
metadata.set(Metadata.CONTENT_TYPE, mimeType);
BodyContentHandler handler = new BodyContentHandler();
InputStream fis = new FileInputStream(file);
adp.parse(fis, handler, metadata, new ParseContext());
fis.close();
System.out.println(handler.toString());
它有效,但我需要知道元信息。
是否已有一个Handler输出类似HTML的读取RTF文件的结构?
我建议不要问Tika的纯文本版本,而是想知道你所有漂亮的HTML信息在哪里,你只需要问Tika文件为XHTML。然后,您就可以对其进行处理,以便在RTF文件中找到所需的信息
如果您查看Tika示例或Tika单元测试,您将看到相同的模式,以便轻松获得XHTML输出
Metadata metadata = new Metadata();
StringWriter sw = new StringWriter();
SAXTransformerFactory factory = (SAXTransformerFactory)
SAXTransformerFactory.newInstance();
TransformerHandler handler = factory.newTransformerHandler();
handler.getTransformer().setOutputProperty(OutputKeys.METHOD, "xml");
handler.getTransformer().setOutputProperty(OutputKeys.INDENT, "no");
handler.setResult(new StreamResult(sw));
parser.parse(input, handler, metadata, new ParseContext());
String xhtml = sw.toString();