Apache Tika: разбор файлов visio (.vsd)

В настоящее время я пишу программу на Java для извлечения метаданных из нескольких типов документов. На данный момент я пытаюсь извлечь метаданные из файлов .vsd с помощью Apache Tika. Раньше я пытался использовать 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);
        }

И вот трассировка стека:

Исключение в потоке «основной» java.lang.RuntimeException: TODO в org.apache.poi.hdgf.pointers.PointerFactory.createPointer(PointerFactory.java:45) в org.apache.poi.hdgf.HDGFDiagram.(HDGFDiagram.java: 99) по адресу org.apache.poi.hdgf.extractor.VisioTextExtractor.(VisioTextExtractor.java:55) по адресу org.apache.tika.parser.microsoft.OfficeParser.parse(OfficeParser.java:200) по адресу org.apache.tika. parser.microsoft.OfficeParser.parse(OfficeParser.java:161) в VsdFile.displayMetadata(VsdFile.java:43) в main.main(main.java:26) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в 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, поэтому я надеюсь, что мой вопрос не слишком очевиден, чтобы ответить на него.

Спасибо.

С уважением,

Бдлул


person Bdloul    schedule 17.01.2013    source источник
comment
Похоже, у вас есть более старый файл визуализации (v5), который в настоящее время не поддерживается Apache POI (отсюда и TODO). Не могли бы вы немного написать код и отправить патч, чтобы добавить недостающую функциональность?   -  person Gagravarr    schedule 18.01.2013
comment
Я бы с удовольствием, если бы только знал, с чего начать.   -  person Bdloul    schedule 22.01.2013
comment
Вы бы хотели получить документацию по спецификации формата файла с веб-сайта Microsoft, а затем сопоставить ее с некоторыми шестнадцатеричными дампами из нескольких разных файлов....   -  person Gagravarr    schedule 22.01.2013


Ответы (1)


Значит, проблема была в плохом vsd-файле.

person Bdloul    schedule 23.01.2013