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

Как подружить MS Office и LibreOffice

Время на прочтение5 мин
Количество просмотров230K
image
Здравствуй, читатель! Ты когда-нибудь занимался переводом своего офиса/школы/института/друзей на Linux? Помнишь, как долго и упорно ты доказывал, что это — путь добра и света? А помнишь первую проблему, из-за которой пришлось все вернуть назад? Дай угадаю. Первый документ созданный в LibreOffice или OpenOffice отказался корректно открываться в MS Office? Слезы, сопли и мольбы оставить Linux ни к чему не привели? Утри нос, читатель! Под катом — о том, как подружить LibreOffice 3.5 и MS Office 2010 так, чтобы все везде открывалось одинаково.


Корень всех зол


Я, если и не сходу, очень быстро дошел до того, что работа с хорошо структурированными документами позволяет в будущем избежать многих проблем с их использованием. Все эти кучи пробелов для сдвига текста вправо и использование кнопки «Жирно» вместо использования стилей были мне чужды. В отличие от многих моих коллег, я тратил больше времени на подготовку структуры документа, чем на его содержимое, зато все мои документы были аккуратными и изменять их было одно удовольствие.

Когда пришел тот прекрасный день, когда я пересел с MS Office на LibreOffice, я заметил, что содержимое многих моих документов осталось цело и так же аккуратно отформатировано. Уже тогда, я знал, что документы должны искажаться и ломаться при переходе, но это касалось только некоторых моих документов (как правило, с векторной графикой внутри). Мой внутренний программист требовал исследовать этот удачный опыт. Оказалось, что если придерживаться некоторых правил при форматировании документа, он будет полностью переносим между LibreOffice и MS Office.

Unit-tests


Чтобы узнать, какие именно элементы форматирования «слетают» при переносе, я разделил все на минимальные части и группы. Так, для начала нужно было рассмотреть форматирование целых страниц, затем абзацев, затем букв, таблиц, списков, изображений и так далее. Всего получилось 10 групп, а именно:
  • Страницы
  • Колонтитулы
  • Колонки
  • Абзацы
  • Символы
  • Списки
  • Изображения
  • Таблицы
  • Рецензирование
  • Поля

В каждой группе содержится несколько тестируемых компонентов. Так, в группе страницы такими элементами являются: формат, ширина, высота, ориентация, поля и т.д. Каждый компонент тестируется отдельно от предыдущего с надеждой, что если каждый в отдельности пройдет тест, то и вместе они будут отображаться правильно.

Тестирование проходило следующим образом. Для каждого компонента создается отдельный файл в LibreOffice 3.5, в котором данному компоненту устанавливается некоторое известное значение. Например, для тестирования форматов страниц было создано четыре файла со значениями этого компонента: A6, A5, A4, A3 — для тестирования ширины, один файл со значением ширины в 10 см. Каждый файл имел уникальное имя — числовой идентификатор. Так же был создан журнал тестирования — электронная таблица с перечислением всех тестируемых компонентов, их идентификаторов (именно этот идентификатор записывается в качестве имени файла) и флагов: прошел тестирование или нет в LibreOffice и MS Office. Далее каждый файл открывался сначала в LibreOffice, затем переносился на машину с Windows и открывался в MS Office. Все изменения значений компонентов изучались и записывались.

Забегая вперед


Результаты оказались крайне интересными. Оказывается оба этих редактора прекрасно уживаются. С их помощью можно создавать не только простенькие документы с отбивкой с помощью пробелов, но и целые договоры с нумерацией глав и автоматической нумерацией пунктов договора. Так же я узнал, что если в качестве значения конкретного компонента в LibreOffice установить значение, сохранить документ в doc, выйти и снова открыть документ, это значение может сброситься в ноль. Это означает, что LibreOffice отключает данный компонент из-за того, что он не реализован в MS Office! Так, например, если вы зададите надчеркивание текста и сохраните документ в doc, то после повторного открытия в LibreOffice это форматирование будет просто сброшено. Это вызвано тем, что в MS Office нет надчеркивания текста.

Обо всем понемногу


Теперь коротко о каждой группе и правилах оформления для обеспечения переносимости.

Страницы

Все основные форматы страниц (A6-3) прекрасно переносятся между редакторами, но так как в MS Office форматы A6 и A5 не определены, то станица просто имеет «Особый размер», соответствующий этим форматам.
Ширина, высота и ориентация так же отлично переносятся, как и поля страницы, чего нельзя сказать о цветном фоне, и дело вовсе не в MS Office (он-то прекрасно отображает выбранный в LibreOffice цвет фона страницы), как ни странно именно первый отказывается закрашивать страницу в нужный цвет!
Если вы хотите нарисовать границы страницы, то никаких проблем с переносимостью не возникнет, но вот отступы использовать не получится, лучше заменить их на поля.
Нужно смешать в одном документе книжную и альбомную ориентацию? Дерзайте! Используйте для этого разрыв страницы и никаких проблем с переносимостью у вас не возникнет!

Колонтитулы

Ничего сложного, если следовать четырем простым правилам:
  1. Всегда включайте колонтитулы в документ, даже если они пусты
  2. Высота всегда должна быть установлена в значение 0,10 см, используйте для задания высоты колонтитула компонент Интервал
  3. Реальная высота поля страницы = поля + интервал колонтитула + 0,10 см
  4. Не используйте границы и поля в колонтитулах

Таблицы и нумерация в колонтитулах отлично переносятся.

Колонки

С этим нет никаких проблем, любое число колонок, их ширина и интервал между ними переносятся без проблем.

Абзацы

Отступы, интервалы, поля, цвета, выравнивание и границы переносимы, вертикальное выравнивание — нет (выравнивание строки относительно центральной оси предложения), ведь в MS Office оно отсутствует.

Символы

Из форматирования шрифтов не работает надчеркивание и… больше ничего! Все остальное прекрасно переносится.

Списки

Самое сложное. Тут крайне важна правильная структура и проще всего ее добиться именно в LibreOffice. Маркированный и нумерованный списки переносятся нормально, проблема возникает с уровнями списка, они просто сбрасываются при переносе. Выходом является использование команд На уровень вниз и На уровень вверх в LibreOffice, а так же правильное использование окна Маркеры и нумерация. Немного «белой магии» и списки переносятся отлично.

Изображения

Совершенно никаких сложностей, важно лишь помнить, что привязка возможна только К символу или Как символ, а перед изображением лучше оставлять одну пустую строку (иначе они поменяются местами). Крайне не советую пользоваться встроенными векторными редакторами, лучше картинки ;)

Таблицы

Вообще никаких проблем, переносятся чисто.

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

Примечания, удаление текста и добавление текста работают отлично при переносе. Также оба редактора нормально обрабатывают механизмы Отмены и Приемки изменений.

Поля

Смог создать поле Дата в определенном формате, на этом и закончил.

Пора прощаться


Напоследок о самом главном. Хорошая структура документа — залог его переносимости! И несколько важных советов:
  • Не используйте пробелы или табуляцию для сдвига текста в край, для этих целей есть отступы, выравнивание или в крайнем случае таблицы
  • Используйте стили везде и всегда, это позволит вам в будущем изменять документ в пару кликов
  • Не позволяйте другим копаться в вашем документе, изменяя его. Просите помечать изменения и изменяйте документ сами, это сбережет структуру документа от потных ручонок
  • Попробуйте LibreOffice. До этого теста я был убежден, что единственным действительно стоящим решением MS (да уберегут меня боги Linux от холивара) является их офис, и как же я был удивлен, что в LibreOffice есть больше компонентов форматирования. Не верите — попробуйте сами!
  • Не используйте сложное формирование документа. Нужен красочный буклет — забудьте о переносимости. Редакторы просто не понимают векторную графику друг друга
  • Подготовьте все документы и проверьте их на разных редакторах заранее, это сбережет вам нервы в будущем
  • PDF отлично отображается на любых редакторах, LibreOffice и MS Office умеют экспортировать документ в этот формат. Понимаете намек?


Полезные ссылки


Все тесты и примеры на Github. Здесь вы найдете (в перспективе) еще и готовые шаблоны различных документов и договоров, протестированные и гарантированно переносимые. Присоединяйтесь!
Теги:
Хабы:
Всего голосов 106: ↑82 и ↓24+58
Комментарии152

Публикации

Истории

Ближайшие события

2 – 18 декабря
Yandex DataLens Festival 2024
МоскваОнлайн
11 – 13 декабря
Международная конференция по AI/ML «AI Journey»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань