我目前正在用 Java 编写一个程序来从多种文档类型中提取元数据。目前我正在尝试使用 Apache Tika 从 .vsd 文件中提取元数据。我之前尝试过直接使用 Apache POI,但事实上很难找到关于库中这个未使用部分的任何文档,所以我决定使用 Tika。
好的,这是我崩溃的代码示例(在第 7 行崩溃):
ParseContext context = new ParseContext();
Metadata metadata = new Metadata();
WriteOutContentHandler handler = new WriteOutContentHandler(10 * 1024 * 1024);
try {
FileInputStream fis = new FileInputStream(fileName);
OfficeParser officeParser = new OfficeParser();
officeParser.parse(fis, handler, metadata, context);
String[] metadataNames = metadata.names();
// Display all metadata
for (String name : metadataNames) {
System.out.println(name + ": " + metadata.get(name));
}
} catch (FileNotFoundException E) {
System.out.println("No such files : " + fileName);
}
这是堆栈跟踪:
线程“main”中的异常 java.lang.RuntimeException: TODO at org.apache.poi.hdgf.HDGFDiagram.(HDGFDiagram.java: 99) 在 org.apache.tika.parser.microsoft.OfficeParser.parse(OfficeParser.java:200) 在 org.apache.tika 的 org.apache.poi.hdgf.extractor.VisioTextExtractor.(VisioTextExtractor.java:55)。 parser.microsoft.OfficeParser.parse(OfficeParser.java:161) 在 VsdFile.displayMetadata(VsdFile.java:43) 在 main.main(main.java:26) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun .reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
我对 Java 很生疏,所以我希望我的问题不是太明显而无法回答。
谢谢你。
问候,
布卢尔