Как стать автором
Обновить

Как подружить LO и MSO. Часть 2: автоматическая генерация тестов для docx и odt

Open source *
Здравствуй, читатель! Как и обещал, продолжаю тестировать различные форматы документов в MS Office 2010 и LibreOffice 3.5. За время написания этого поста я успел проверить в работе форматы odt и docx — к сожалению, остался разочарован. Но не будем забегать вперед; под катом о том, как эти форматы обрабатываются в MSO и LO, а также небольшой сюрприз тестировщикам: как автоматизировать процесс генерации тестов для такой необычной области, как форматы документов.

Ожидания


В комментариях к прошлому посту, как и повсюду в интернете, много говорили о форматах docx и odt, как о замене старого и (как оказалось) не очень доброго doc. Много говорили о стандарте doc, много вспоминали о качестве формул в odt, грех было не протестировать эти форматы в деле. Если честно, я ожидал, что odt будет открываться и там и тут без проблем, docx же покажет результаты похуже чем odt, но намного лучше чем doc. Но мечтам не суждено было сбыться…

Генератор тестов


Тесты для doc я готовил около дня. Согласно логике, столько же мне нужно было для docx и еще день для odt. Три дня для написания одинаковых тестов, но в разных форматах! Какого программиста это может устроить? Базисом моей идеи является следующее наблюдение: если сохранить любые компоненты в odt под LO, то они не изменятся при повторном открытии в LO. Это означает, что все тесты изначально нужно было писать в odt формате, затем их нужно всего лишь пересохранить в форматах doc и docx, что даст нам три теста взамен одного. К счастью, у soffice есть параметр --convert-to, который я и использовал для автоматизации.

Итак, как же автоматизируется создание тестов:
  1. Пишем все тесты в odt
  2. Пишем небольшой sh для конвертации odt в любой формат
    converter.sh
    soffice --headless --convert-to $2 $1
    

  3. Пишем еще один sh для автоматизации процесса конвертации всех доступных odt тестов
    create.sh
    for i in `seq 12`; do
      cd $i;
      ../converter.sh "*.odt" doc;
      ../converter.sh "*.odt" docx;
      cd ..
    done
    

  4. На всякий случай пишем sh для удаления всех doc и docx
    clean.sh
    for i in `seq 12`; do
      rm $i/*.doc* $i/*/*.doc*;
      rm $i/*.docx* $i/*/*.docx*;
    done;
    



В результате получаем генератор тестов из odt в doc и docx + полностью переписанные тесты для всех трех форматов за один день!

Помимо форматов


Новые форматы — это хорошо, но я не забыл о просьбах читателей и добавил в тесты формулы и сноски. Как оказалось, дела здесь обстоят не так плохо, как говорили. Большая часть компонентов отображается корректно.

Также немного изменил журнал. Добавил немного статистики для поиска наиболее «хорошего» формата, который бы хорошо отображался в большинстве случаев на обоих редакторах.

Результаты


Страницы

Все форматы корректно работают с размерами страниц, их ориентацией, полями и границами. Цвет фона страниц лучше не использовать вовсе, как и отступы от границ (заменяется полями или отступами абзацев).

Колонтитулы

Если вам от колонтитулов нужно указать высоту (в LO — интервал) или добавить номера страниц, то никаких проблем ни в одном из форматов не возникнет. Но вот границы и боковые поля обрабатываются не очень, так же плохо обрабатываются таблицы в колонтитулах в формате docx, в LO они удаляются (странно, но даже удаленные они видны в MSO).

Колонки

Нигде никаких проблем.

Абзац

Отступы, интервалы и выравнивание во всех форматах и редакторах отображаются одинаково, как и цвета с различными выделениями. Границы тоже можно использовать без опасений, но вот о такой экзотике как вертикальное выравнивание относительно базовой линии следует забыть, MSO об этом просто не знает. Параметры «Не разрывать абзац» и «Не отрывать от следующего» тоже корректно отображаются во всех форматах и редакторах.

Символы

Нет никаких проблем за исключением двух:
  • О надчеркивании можно забыть
  • Гиперссылки удаляются при открытии odt через MSO


Списки

Тоже все хорошо в doc и docx. В odt смещаются отступы списков.

Изображения

Если коротко — пользуйтесь doc. Никаких проблем с изображениями в ваших документах не будет.

Таблицы

Аналогично предыдущему пункту — doc показал себя и здесь лучше всех.

Рецензирование

Если любите odt, о переносимости можете забыть! MSO удаляет все данные об изменениях из документа без вашего согласия.

Поля

Вроде как все везде корректно, но после долгих тестов пришел к выводу — не используйте специальные поля в ваших документах (кроме номера и количества страниц, конечно).

Формулы

Здесь docx вне конкуренции. Отличное отображение формул и возможность редактирования (правда с левосторонними индексами не очень — их просто нет).

Сноски

Все форматы показали себя хорошо, один только docx решил использовать числа при буквенной нумерации сносок, но ведь это не страшно, правда?

Мой вердикт


Если нужен договор, письмо и подобная бизнес-документация, используйте doc. Отлично обрабатывается как форматирование текста, так и различные вставки (кроме формул).

Нужно писать доклад, диссертацию или курсовую? Используйте docx и никаких проблем с формулами у вас не будет.

У вас красные глаза линуксоида и вы ведете курсор в сторону «Не нравится» с мыслями — «odt forever!!!»? Нет моей вины в том, что odt показал себя хуже других. Почему-то все odt файлы не хотели нормально открываться в MSO и требовали «Восстановить документ». С чем это может быть связано — не знаю, документы создавал по правилам, никаких плясок с бубном над используемым LO не устраивал. Возможно дело в версии (у меня LO 3.5)?
Теги:
Хабы:
Всего голосов 26: ↑19 и ↓7 +12
Просмотры 8.1K
Комментарии Комментарии 11