Формирование внешних печатных форм на LINUX

В связи со все большим использованием LINUX как основной ОС для сервера приложения и для клиента, вопрос формирования печатных форм приказов и т.п. с учетом всех требований по оформлению встал очень остро. Ранее для этого использовали макеты в формате doc и обрабатывали, запуская word или writer в фоне как com приложение.
Пользователи очень требовали работы под Cent OS и «родилось» решение без использования com.

Новые версии MS Office хранят файлы в формате docx и xlsx, которые представляют собой zip архив с описанием структуры файла в виде xml файла.

Приступим.

  1. Готовим печатную форму, в те места куда необходимо внести информацию отмечаем уникальными тегами.
  2. Загружаем печатную форму в макет как двоичные данные.
  3. При печати получаем макет как файл и распаковываем.
  4. В папке находим файл document.xml
  5. Обрабатываем его как строку (заменяем теги на данные)
  6. Сохраняем обратно в файл document.xml
  7. Упаковываем папку в zip архив и отдаем документ пользователю.

В результате получили 2 плюса:

  • Форма выводится со всеми отступами и форматированием как в исходном шаблоне.
  • Скорость формирования такой печатной формы намного выше.

Во вложении пример.

p.s. Теперь вообще неважно, какой текстовый редактор используется, и на какой ОС работает пользователь.

10 Comments

  1. milkers

    Что насчет формирования таблиц с переменным количеством строк?

    Reply
  2. OPM

    Надо копать глубже структуру xml, пока не было необходимости.

    Reply
  3. CSiER

    Формат называется Office Open XML — реализаций на 1С не встречал — может быть кто-то в комментариях ниже поделится ссылками.

    Reply
  4. starik-2005

    (1) а в чем трудность? Сделай таблицу с тремя строками, в каждую строку напиши «Строка_1(2,3)» и погляди, что там в XML получилось. Думаю минут 10 надо от силы, чтобы разобраться, как и что с таблицами делать.

    ЗЫ: Совсем программисты любопытство потеряли. Или это только 1С-неги таковы? )))

    Reply
  5. JohnyDeath

    Просто оставлю это здесь: http://infostart.ru/public/16215/

    Reply
  6. OPM

    (5)спасибо хорошая обработка, но это универсальное решение для создания документа. Основная мысль моего решения, что заказчики сами готовят документ в том виде, и форматировании в котором хотят получить, работа программиста в этом случае только заменить слова на теги.

    Возьму ознакомиться с генерацией Office Open XML. Спасибо.

    Reply
  7. Probot1c

    Не совсем авоматизированная обработка, все равно нужно вручную исправлять

    Reply
  8. starik-2005

    (7) исправь обработку — и не парься.

    Reply
  9. OPM

    Пользователю нужна не обработка с кучей настроек, а кнопка формирующая нужный ему документ (печатную форму), а это идея как упростить труд программиста по созданию такой кнопки. Можно дальше развивать, до хранения в отдельном справочнике реестра заменяемых полей и алгоритма как их заполнять по каждой печатной форме и т.д. Надо просто посчитать что выгоднее по времени и дальнейшему сопровождению, сделать печатные формы отдельными обработками или делать делать универсальный механизм?

    Reply
  10. acanta

    Очень хорошая идея, спасибо.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *