Pull to refresh

Comments 25

Windows Подворье двоичных файлов формата

Смешно)
была бы библиотека которая из DOC файлов и форматирование некоторое вырывала бы… для DOCX не так уж и сложно сделать…
WCBFF — это не «Windows Подворье двоичных файлов формата», а «Смешанный Бинарный Файловый Формат».
А в каком переводчике этот вариант? :)

PS. Compound — скорее «составной» а не «смешаный» в данном контексте.
В том же google, но если переводить слово отдельно. Составной — не звучит. А смешанный — подходящий синоним. ИМХО.
Ну что Вы в самом деле — чтобы получить только текст в doc и cfb нужно прочитать порядка 100 страниц документации на неродном языке. Чтобы не делать текст совсем сухим и техническим, я и разбавил его маленькой, возможно плоской шуткой.

Я бы название формата вообще расшифровал, как «структурированный бинарный файловый формат».
Мне кажется вот это уже лишее.
Скажем так (без оглядки на структуру формата, его сложность и добрые слова разработчика) этот формат мне в данный момент не интересен. Более того, я могу сказать, что я не считаю DOC или CFB плохими форматами, в то время когда они были изобретены, они здорово увеличивали скорость работы с документами на нешибко скорых компьютерах. Вполне возможно, что PSD шёл по тому же пути.
Ага, совсем чуть-чуть непросто. Следующая цель — текст из PPT.
Эта статья то, за что я люблю Хабрахабр! Спасибо.
Круто. вот уж не думал, что микрософт изобретут файловую систему внутри файла )
а вообще вопрос — какой может быть профит от фрагментирования?
А смысл избавляться от фрагментирования? Можно сохранить файл под другим именем из MS Word'а, скорее всего внутренняя фрагментация уменьшится.
Очень познавательно, читается на одном дыхании, спасибо
По идее везде в тексте стоит заменить CFB на CBF. Немного бросается в глаза.
А почему вы функцию unpack не используете?
Я тоже задавался этим вопросом, уже пост фактум :) Вообще, это скорее лень пролистать лишний раз документацию, чтобы найти правильный велосипед… Скажем так, каюсь — не прав :)
Проблема… функция unicode_to_utf8 работает странно…

прогоняю через mb_strtolower($text, 'UTF-8'); и текст в нижний регистр не переводится.

Через вашу функцию, которая docx конвертит в текст — текст нормально в нижний регистр переводится. mb_* функции не понимают, что это UTf-8 и отказыаются работать с такими текстами.

Вот одну строчку заменил на Iconv. помогло.
if (!$isANSI) $part = iconv("UTF-16","CP1251", $part); //$part = $this->unicode_to_utf8($part);
т.е. вот правильная строка: $part = iconv('Windows-1251','UTF-8', iconv(«UTF-16»,«CP1251», $part));
+ Добавил обработчик на случай зацикленности. Число можно подобрать из рассчета максимального размера файла, который придется обрабатывать.

Таким образом тот файл просто не будет обработан.
while (($cp[] = $this->getLong($i, $pieceTable)) != $lastCP){ $i += 4; if($i>=200000)return ''; }
Sign up to leave a comment.

Articles