LINUX.ORG.RU

формат док


0

0

есть дока Windows Compound Binary File Format Specification

беру простой тестовый док созданный в Microsoft Office 2000 - хедер читается нормально но после него идет не сектор а хрень какая-то:

0000200 a5ec 00c1 2039 0419 0000 12f0 00bf 0000

что это за мусор? что делать? подскажите как прочесть его

к исходникам опен офсиа не отсылайте в 500-метрах исходников разобраться может только маклауд

спасибо!

★★★

могу отослать к исходникам catdoc, оно покороче

gaa ★★
()

Windows Compound Binary File Format - все же такая мерзость >.<

Amp ★★★
()
Ответ на: комментарий от Legioner

Еще можно в исходники antiword заглянуть - это конвертер doc -> txt

anonymous
()
Ответ на: комментарий от Amp

> Покажи все первые 512 байт.

0000000 cfd0 e011 b1a1 e11a 0000 0000 0000 0000
0000010 0000 0000 0000 0000 003e 0003 fffe 0009
0000020 0006 0000 0000 0000 0000 0000 0001 0000
0000030 0021 0000 0000 0000 1000 0000 0023 0000
0000040 0001 0000 fffe ffff 0000 0000 0020 0000
0000050 ffff ffff ffff ffff ffff ffff ffff ffff
*
0000200 a5ec 00c1 2039 0419 0000 12f0 00bf 0000


за советы по catdoc и antiword спасибо! попробую посмотреть

fura13 ★★★
() автор топика

последняя версия документации Windows Compound Binary File Format очень подробная. вы видимо что-то не дочитали, если у вас получается мусор.

Там формат достаточно простой - читается первый сектор, оттуда вытаскивается данные о размере файла, кол-ве записей и т.п. А также данные о первых 109 секторов таблицы Master FAT, потом дочитываете эту таблицу (если нужно), ну и начинаете строить остальные таблицы и т.п. На С++ реализация занимает порядка 500 строк с комментариями и отладочной информацией

В реализации OLE reader в Catdoc могут быть баги, поскольку оно писалось в то время, когда документации практически не было, и приходилось реверс-инженерить

ott ★★★★★
()
Ответ на: комментарий от ott

> На C++ реализация занимает порядка 500 строк

Эх, а на том же erlang'е будет не более сотни, я думаю :)

P.S.: никакого флейма, просто восхищение удобством работы с бинарными данными/файлами

Cy6erBr4in ★★★
()
Ответ на: комментарий от fura13

ott выше описал алгоритм. Тебе пока в принципе не важно, что находится в 1-м секторе, который по 200h. Действительно, построй таблицы размещения секторов, затем строй цепочки идентификаторов для требуемого стрима или проперти..

Описание формата у тебя, надеюсь, опенофисовское, а не гадость от мелкомягких на 9 страниц?

Amp ★★★
()
Ответ на: комментарий от Amp

для тех кто не следит за этой темой - Микрософт выпустил новую документацию по всем офисным форматам, и она теперь значительно превосходит опен-офисную :-)

Особенно это касается описаний различных вспомогательных объектов в compound файле - CompObj, OleNative и т.д.

ott ★★★★★
()
Ответ на: комментарий от ott

можно ссылку? что то гугл постоянно не то пихает

fura13 ★★★
() автор топика
Ответ на: комментарий от fura13

возьмите нормальную, новую документацию от микрософта - я ссылку на свой блог дал - там вся информация есть и ссылки на все варианты документации

ott ★★★★★
()
Ответ на: комментарий от ott

Гм.. ссылкой на обновленную документацию по CompDoc не поделишься (я что-то в гугле найти не могу нужное)?

Amp ★★★
()
Ответ на: комментарий от Cy6erBr4in

Ну а ты в свою очередь не имел дела с CompDoc, но высказываешь предположения ))

Amp ★★★
()
Ответ на: комментарий от Cy6erBr4in

не думаю, что там будет особая разница в объеме кода - у меня на С++ в функциональном стиле написано :-)

ott ★★★★★
()
Ответ на: комментарий от ott

> http://msdn.microsoft.com/en-us/library/cc546605.aspx - Compound file description

Спасибо, действительно приятное и подробное описание :) Жаль, что его не было под рукой пару месяцев назад, когда плотно работал с этими бинарными файлами.

Amp ★★★
()
Ответ на: комментарий от ott

Я имею в виду ковыряния в бинарных спагетти...с этим в erlang существуют особые удобства ;)

Ок, тут спорить вот так бессмысленно, давай ты расскажешь какой функционал реализован в этих 500 строках, а я постараюсь что-то подобное заимплиментить :)

Cy6erBr4in ★★★
()
Ответ на: комментарий от Cy6erBr4in

чтение и разбор файла, корректное построение дерева объектов, доступ к отдельным объектам, как последовательным перебором, так и по имени и/или типу (каталог/файл, и т.п.)

ott ★★★★★
()
Ответ на: комментарий от ott

Там дата релиза в доке стояла - 20-е числа июля. У меня дело происходило несколько раньше. Возможно оно и вышло, но, повторюсь, под руку увы не попало.

Amp ★★★
()
Ответ на: комментарий от Amp

если что - обращайтесь, я давно с этими форматами работаю

ott ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.