limetelecom (limetelecom) wrote,
limetelecom
limetelecom

Category:

Как всем офисом перейти на LibreOffice (Часть 1 "Как всё было хорошо первые два часа").

Задача: И так вдохновившись статьями с небезызвестного ИТ ресурса о том что новый LibreOffice (LO) можно наконец использовать в работе без вероятности системному администратору слечь в сумасшедший дом. Было принято "эпохальное решение" всем офисом отказаться от платного Microsoft Office (MO) и перейти на бесплатный LibreOffice 4.4.1.2 (как мы уже выяснили в предыдущей статье, версия программы иногда оказывает решающее значение).

Реализация: Для начала небольшое отступление, почему мы решили отказаться от MO и почему вы можете повторить наш путь если ваша компания удовлетворяет следующим условиям:
1. Мы не интегрированы в продукты Microsoft. MO у нас используется исключительно для целей набрать исходящее письмо, распечатать договор (об этом чуть подробнее будет ниже), открыть таблицу или текстовый документ присланный от партнёров, подготовить приказ по предприятию и т.п.
2. Мы небольшая компания где все друг друга знают и находятся в шаговой доступности. Поэтому перевести всех и разом оказалось дело 30 минут (время на установку LO на всех машинах в офисе).
3. У нас "синусоидальный" режим нагрузки на сотрудников офиса. То есть в нашем рабочем месяце (где то с 10 по 20 число) количество работы минимальное и мы можем себе позволить всё сломать и построить заново и на это у нас есть 10 дней.

И так часть первая "Как всё было хорошо первые два часа":
[Хотите узнать почему, читаем дальше...]Установка офиса задача простая и подробно на ней останавливаться не будем, в общих чертах MO удалили, LO поставили. Во время установки поставили галочку чтобы LO загружался в месте с системой (заметно ускоряет запуск приложений).

Сразу после установки всё было прекрасно, старые doc и xls открываются без проблем, с мелкими незначительными нарушениями в разметке. Что самое интересное открывались без особых проблем и новые форматы MO docx и xlsx.

Интерфейс интуитивно понятный, а те кто застал MO 2003 сразу приступили к работе на задавая никаких вопросов, одно "но" заранее договоритесь со всем коллективом использовать одни и те же иконки в интерфейсе (в LO их можно выбирать по вкусу), так как иначе вы рискуете попасть в ситуацию когда один сотрудник пытается объяснить другому как выглядит иконка "Поиск и замена" а тот его не понимает. Лично мне "работа напильником" а именно выравнивание таблиц, текстов установка отступов, показалась более приятной и "однозначной" чем в MO.

Всё было прекрасно и замечательно до момента пока один из сотрудников не решил распечатать договор на очередного абонента. Тут небольшое пояснение как у нас формируется договор: мы оператор связи у нас есть сертифицированное ядро учёта абонентов и управления ими, поверх этого ядра нами написана удобная CRM (Система управления взаимоотношениями с клиентами) на PHP, она автоматически формирует текст договора в формате HTML, получая данные из карточки абонента. Браузеру договор в формате HTML посылается с волшебными заголовками, заставляющими его думать что ему предлагают скачать файл odt (изначально было doc), вот как это выглядит в коде:

header("Content-Type: application/vnd.oasis.opendocument.text");
header("Expires: 0");
header("Cache-Control: no-cache");
header("content-disposition: attachment;filename=rosnet_contract_".$ab_dog_uni_sv.".odt");
print '<html>
<head> далее идёт сам договор...


Почему сразу не выводить на печать, объясняю: иногда бывают очень экзотически клиенты с такими же экзотическими требованиями и приходится допиливать договор руками и только после этого отправлять в печать.

Пока у нас был MO вся эта отлаженная процедура прекрасно работала, как выяснилось позже потому что MO допускает боле вольное трактование HTML разметки (более продвинут в познаниях HTML если перефразировать). В противовес ему LO оказался боле придирчив и прекрасно оформленный и размеченный договор "развалился по швам" при очередной попытке его сформировать. Что же случилось, разбираем по пунктам:

1. Все стили шрифтов, таблиц и параграфов в нашем договоре подгружались из отдельного CSS файла, с LO такая конструкция не пройдёт и даже больше вы не сможете заставить его переварить стили заключив их непосредственно в теле и окружив тегами:

<style></style>

Единственно что позволит вам LO это указать там параметры полей и body. Собственно этим мы и воспользовались и написали "кроссофисный" стиль оформления отступов полей (его понимает и MO и LO):

<style type="text/css">
@page WordSection1{
margin-top:1cm;
margin-left:2cm;
margin-right:1cm;
margin-bottom:1cm;
}
div.WordSection1{
page:WordSection1;
}
</style>

Ну и соответственно весь договор надо завернуть в DIV с калассом WordSection1:

<body><div class=WordSection1> Текст договора </div></body>

А остальные стили нужно прописывать в каждой ячейке, каждом параграфе, в каждом DIV-е, только тогда LO начинает их честно обрабатывать. Однако не расслабляйтесь как выяснилось экзотические стили которые понимал MO не всегда понимает ("правильно") LO, но для формирование договора в большинстве случаев вы с этим не столкнётесь.

2. Ну а теперь самое интересное что собственно и сподвигло нас к написанию этого поста, рассказ о том как логотип нашей компании остановил работу этой самой компании на двое суток.

Разобравшись что LO корректно принимает стили заключенные только в конструкцию "style=", мы продолжили переделывать исходный код договора и всё шло прекрасно пока не дошли до таблиц. Они с упорством древнегреческих героев не воспринимали заданные поля документа и выползали далеко за них. Что самое интересное из двух таблиц с одинаковым стилем первая всегда упералась в поля (width=100%) а вторая вываливалсь за них.

Вот так это выглядит:
1

У тех кто не первый год в HTML сразу подозрение что гдето не закрыт тэг, но многочасовые поиски и создание пустых бланков без текста и только с таблицами доказывали что все теги закрыты. И так шли вторые сутки поиска что именно влияет на расползание 2-3 таблицы в документе. Открывался чистый документ вручную создавались несколько таблиц, вставлялся текст, всё это сохранялось в HTML и открывалось редаторами для поиска святого грааля, которого нехватает в нашем коде.

В конце вторых суток грааль был обнаружен. Как мы уже упоминали выше - это тэг ставки изображения с логотипом. Если его убирали из когда все таблицы возвращались на нужные места. Как он выглядел:

<td width="50%" height="55px" valign="top" align="left">
<img src="https://****.ru/****_data/img/doc_logo.png" width="200" height="45" border="0">
</td>


Ну как видите что либо подозрительное, а LO видит, и видит он отсутствие заданного выравнивания картинки а именно align="left", хотя в теге ячейки таблицы выравнивание по левому краю указанно. Меняем наш код на:

<td width="50%" height="55px" valign="top" align="left">
<img src="https://****.ru/****_data/img/doc_logo.png" width="200" height="45" align="left" border="0">
</td>

Результат:
2

Как выравнивание изображения в траблице на уровень выше влияет на таблицу на уровень ниже, так и осталось загадкой.

Tags: crm, doc, libreoffice, microsoft office, odt, office, php, word, офис, экспорт в html
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments