Перейти к содержимому
pdftools.kz

Формат DOC (Word 97–2003)

Файл .doc начинается с байтов D0 CF 11 E0 A1 B1 1A E1 — это сигнатура составного документа OLE, микрофайловой системы внутри одного файла. Ни архиватор, ни текстовый редактор ничего внятного оттуда не достанут. Наш конвертер такие файлы отклоняет намеренно: сервер видит расширение .doc и отвечает сообщением «Старый формат Office не поддерживается. Сохраните файл как .docx, .xlsx или .pptx и попробуйте снова».

Локально в браузеребез регистрации

Коротко о цифрах

Первые байты
D0 CF 11 E0 A1 B1 1A E1 — составной файл OLE
Ответ сервера
код LEGACY_FORMAT_NOT_SUPPORTED, статус 400
Когда срабатывает отказ
до конвертации, по концу имени файла
Та же сигнатура
у .xls и .ppt — расширение решает, чем считать файл
Что принимает конвертер
только .docx; список расширений маршрута закрыт

Почему это не «просто старая версия»

DOCX и DOC отличаются не годом выпуска, а принципом хранения. DOCX — ZIP с текстовыми XML внутри: любой язык программирования разберёт его стандартной библиотекой. DOC — двоичный дамп внутренних структур Word: потоки WordDocument, 1Table, Data, таблица форматирования с указателями на смещения. Формат задокументирован Microsoft отдельной спецификацией, но читать его без готовой библиотеки бессмысленно.

Отсюда и разница в живучести. У ZIP каждая запись имеет собственный заголовок, поэтому из побитого DOCX часто вытаскивается хотя бы текст. В DOC достаточно испортить таблицу смещений, чтобы файл перестал открываться целиком. И ещё одна известная особенность старого формата: при «быстром сохранении» Word дописывал изменения в конец файла, из-за чего внутри могли оставаться фрагменты уже удалённого текста.

Что происходит, когда вы грузите .doc к нам

  1. Окно выбора файла пропускает .doc — в списке принимаемых типов есть application/msword, так что файл выбирается и уходит на сервер.
  2. Сервер смотрит на конец имени. Проверка срабатывает на .doc, .xls и .ppt, и делает это раньше всех остальных.
  3. Ответ приходит с кодом LEGACY_FORMAT_NOT_SUPPORTED и статусом 400 — то есть отказ, а не сбой.
  4. На экране появляется готовая подсказка: сохранить как .docx и повторить. Конвертация при этом не запускалась, время не потрачено.
  5. Пересохраните файл и загрузите заново — дальше всё идёт обычным путём через LibreOffice на сервере.

Как пересохранить и что проверить

  • Word: «Файл» → «Сохранить как» → тип «Документ Word (*.docx)». Режим совместимости в заголовке окна после этого пропадает.
  • LibreOffice Writer: «Файл» → «Сохранить как» → «Word 2007-365 (.docx)», подтвердить выбор формата в диалоге.
  • Google Документы: загрузить .doc на Диск, открыть, «Файл» → «Скачать» → «Microsoft Word (.docx)».
  • После пересохранения проверьте старый WordArt и вставленные объекты — они перерисовываются новым движком и могут сместиться.
  • Поля и автонумерацию пересчитайте вручную: значения, посчитанные в Word 2003, обновятся при первом же открытии.

Частые вопросы

Почему сайт не берёт .doc, если LibreOffice его открывает?

Потому что перед конвертацией мы проверяем первые байты на сигнатуру ZIP, а двоичный DOC её не имеет. Поддержка старых форматов в конвейере нестабильна, и внятный отказ с инструкцией полезнее, чем непредсказуемый результат.

Как понять, что у меня .doc, а не .docx?

Включите показ расширений в проводнике или посмотрите заголовок окна Word: у старого формата там написано «Режим ограниченной функциональности». Ещё вернее — открыть файл архиватором: DOCX откроется, DOC нет.

Что теряется при пересохранении в DOCX?

Текст, таблицы и картинки переносятся полностью. Смещаться могут вставленные OLE-объекты, старый WordArt и рамки, нарисованные средствами Word 2003, — их отрисовывает уже другой движок.

Файл всё-таки загрузился на сервер — он там остался?

Нет. Запрос отклоняется до начала конвертации, тело запроса не сохраняется на диск и во временную папку не попадает: отказ по расширению срабатывает раньше любой работы с файлом.

Рядом