Доброго времени суток.
Данный подход был не верен, так как выполняя код:
Чтение дерева материалов из файла описано в данном посте Чтение файла SolidWorks
Старая версия поста:
Заказчик поставил задачу получать информацию из загруженных на сервер файлов чертежей SolidWorks.
Сделал предварительный обзор файлов SolidWorks, я выявил что они файлы
базируются на OLE2. Для работы с данным форматом файлов я использую http://poi.apache.org/
На сайте poi apache есть простые примерчы как можно порчитать иформацию из файла.
При изучении содержимого файла, я натснулся на поле с именем "MATERIALTREE", мне зажотелось получить данные из этого поля, но тут то и были грабли....
Для начала, я не смог обратится простым способом так как DocumentInputStream и PropertySet мне отвечали NoPropertySetStreamException. Я нащел альтернативный подход к данному свойству:
В результате мы получаем объект POIFSDocument который в себе содержет HexDump.
При разборе данного Hex-а:
Object[] objs = doc.getViewableArray()
Hex.decode(objs[0].toString())
Я получил примерно следующие:
Потратив на разбор некоторое время, я наткнулся на сайт http://open-file.ru/, где по hex заголовку удалось выяснить данный hex может относится к :
....
пока это все наблюдения по разбору POIFSDocument "MATERIALTREE"
to be continued...
Данный подход был не верен, так как выполняя код:
POIFSDocument doc = new POIFSDocument("MATERIALTREE", new FileInputStream(file))я всегда получал сам файл, по это причине я его не мог раскрыть.
Чтение дерева материалов из файла описано в данном посте Чтение файла SolidWorks
Старая версия поста:
POIFSDocument doc = new POIFSDocument("MATERIALTREE", new FileInputStream(file))
00000000 D0 CF 11 E0 A1 B1 1A E1 00 00 00 00 00 00 00 00 ................
00000010 00 00 00 00 00 00 00 00 3E 00 03 00 FE FF 09 00 ........>.......
00000020 06 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 ................
00000030 02 00 00 00 00 00 00 00 00 10 00 00 58 01 00 00 ............X...
00000040 03 00 00 00 FE FF FF FF 00 00 00 00 03 00 00 00