Вы находитесь на странице: 1из 13

29.10.2021, 19:33 Генерация документов.

Легко и свободно / Хабр

КАК СТАТЬ АВТОРОМ Сезон охоты на стажёров: ЛАНИТ делятся опытом

Все потоки Разработка


PennyLane Администрирование
28 августа 2017 в 21:42 Дизайн Менеджмент Маркетинг Научпоп

Генерация документов. Легко и свободно


Чулан

Recovery mode

Продолжая тему генерации документов на основе шаблонов, я хочу обсудить создание


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

Для реализации такого документа в шаблоне можно заранее определить отдельные возможные
строки таблицы, дать им имя, а затем из этих строк собирать таблицу так же, как бусинки
насаживаются на нить, как нити укладываются слой за слоем в ткань с требуемым узором.
В процессе генерации эти вспомагательные строки удаляются из документа. Какая именно строка
должна быть вставлена в документ определяется по ее имени. Именованная строка не
обязательно должна быть строкой таблицы, это может быть текст с нужными атрибутами
отображения.

Таким образом можно собрать документ, где текст чередуется с разнообразными таблицами. В
шаблоне задается помимо именованных строк место, откуда начинается построчная печать.
Задача программиста в данном случае сводится к формированию XML, в котором помимо
данных будет указано, какой строкой их отображать. Т.о. достигается почти полное (только имя
строки задает формат) разделение данных от их представления. И что приятно, имена строк
https://habr.com/ru/post/336574/ 1/13
29.10.2021, 19:33 Генерация документов. Легко и свободно / Хабр

могут быть осмысленными, а генерация происходит быстро.

-9 4K 2
В заключение хочу добавить, что мест в шаблоне, куда надо впечатывать строки с данными,
может быть несколько. Каждое место имеет свое имя (идентификатор). В XML с входными
данными необходимо передавать в определенном тэге это имя перед тем как печатать строка за
строкой данные. Естественно, данные для печати должны быть отсортированы в порядке
следования строк.

Теги: генератор, генерация документа

Хабы: Чулан

Редакторский дайджест
Присылаем лучшие статьи раз в месяц

Электропочта

-11 0
Карма Рейтинг

@PennyLane
Пользователь

Комментарии 22
https://habr.com/ru/post/336574/ 2/13
29.10.2021, 19:33 Генерация документов. Легко и свободно / Хабр
Комментарии
22

НЛО прилетело и опубликовало эту надпись здесь

sHinE 28.08.2017 в 23:02

Очень надеюсь, что это пример работы какого-нибудь инскуственного интеллекта :-D

+2 Ответить

PennyLane 02.09.2017 в 10:30

Эта статья — попытка на пальцах рассказать о проблемах генерации документов.Естественно,


описание опирается на существующую систему генерации.

0 Ответить

НЛО прилетело и опубликовало эту надпись здесь

pavelpromin 28.08.2017 в 23:29

Это чё?! Толстая затравочка к xslt?!

+2 Ответить

x893 28.08.2017 в 23:59

winword это же лет как 10 умеет.

Да и генератор из winword xml с нужными данными — два-три занимает в реализации.

Какие то абстракные рассуждения ни о чем.

0 Ответить
https://habr.com/ru/post/336574/ 3/13
29.10.2021, 19:33 Генерация документов. Легко и свободно / Хабр

AlexZaharow 29.08.2017 в 00:19

Надеюсь, что настанет тот день, когда можно будет совмещать документ word и данные, без
программирования )))

0 Ответить

PennyLane 02.09.2017 в 10:37

На данный момент всю разметку шаблонов и диалоги по вводу информации делают сотрудники Бэк
офиса (без IT). А вот заполнение полей из БД требует программирования. Но это относится только к
новым полям, которые еще не запрограммированы программистом. Спустя определенное время,
большинство полей заполняется автоматически и поэтому ваша надежда близка к реализаци. К
сожалению, для новых полей я не вижу возможности убрать программирование.

0 Ответить

AlexZaharow 06.09.2017 в 20:15

>> К сожалению, для новых полей я не вижу возможности убрать программирование.

Согласен. Но программировать можно по-разному. Высока вероятность, что программировать


придётся не на C# или Java. Надо пригляделся к неявным способам программирования вне этих
языков, но в контексте файла docx. Если это возможно, то разработка шаблонов вполне выйдет на
новый уровень. И кто первый догадается, то неожиданно может получить большой профит, т.к. всем
нужно использовать свои шаблоны, а не те, что может осилить только программист и тем более не
хочется вообще зависеть от программиста.

Вот простой пример по аналогии. Тестирование сайта, закрытого аутентификацией. Можно


запариться и долго настраивать систему тестирования на прохождение разных видов
аутентификации. А можно прогонять все запросы через fiddler, который будет просто подставлять
авторизованные куки (три строчки кода в его панели JavaScript).

0 Ответить
https://habr.com/ru/post/336574/ 4/13
29.10.2021, 19:33 Генерация документов. Легко и свободно / Хабр

norguhtar 29.08.2017 в 09:54

Генерация документа ничем не отличается от генерации веб-страницы. MVC модель отлично тут
работает. Как и собственно разметка шаблонизаторов. К примеру xdocreport поддерживает аж два
шаблонизатора velocity и freemaker

+1 Ответить

PennyLane 02.09.2017 в 10:47

Отличие в том, что: 1.результат будет в MS Word или Excel. 2.Документы могут быть более 100
страниц и генерация их должна происходить быстро. 3.Должно быть минимальное участие
сотрудников IT, т.к. документы нужны бизнесу и очень удобно, когда бизнес сам для себя делает
документы.

0 Ответить

norguhtar 04.09.2017 в 15:21

1.результат будет в MS Word или Excel.

Легко habrahabr.ru/post/101546 на минуточку, я это делал в 2010 году.

2.Документы могут быть более 100 страниц и генерация их должна происходить быстро.

Покажите мне пример. Зачем и кому нужен документ на 100 страниц? В 10-20 легко делается тем
примером что я привел выше.

Должно быть минимальное участие сотрудников IT, т.к. документы нужны бизнесу и очень
https://habr.com/ru/post/336574/ 5/13
29.10.2021, 19:33 Генерация документов. Легко и свободно / Хабр

удобно, когда бизнес сам для себя делает документы.

Это как раз просто. Пишется движок отчетов. В итоге ИТ пишет запрос к примеру в БД с
параметрами. А далее бизнес через интерфейс выбирает необходимые ему параметры и
генерирует нужные ему документы. Такой движок пишется весьма быстро и просто.

0 Ответить

norguhtar 04.09.2017 в 15:22

Более того такие движки существуют уже готовые и открытые.

0 Ответить

michael_v89 30.08.2017 в 02:29

Прочитайте уже книжку по PHP и перестаньте писать ерунду

0 Ответить

PennyLane 02.09.2017 в 10:58

Чтение книг, это очень важно. Очень. Однако еще важнее при чтении понимать смысл прочитанного, а
не слушать свой внутренний голос. Если бы вы реально видели то, что назвали ерундой, то,
возможно, вы бы перестали так легко бросать слова на ветер. Такие слова как Хрень, дребедень,
ерунда -это не из словаря ИТишника. Стив Джобс так не выражался. И Линус Торвальдс.

0 Ответить

НЛО прилетело и опубликовало эту надпись здесь

https://habr.com/ru/post/336574/ 6/13
29.10.2021, 19:33 Генерация документов. Легко и свободно / Хабр

PennyLane 03.09.2017 в 09:29

Могли, но я не слышал. У меня есть запись беседы с Торвальдсом на TED. Милейший человек,
улыбается, имеет чувство юмора, любит кошек и тех, кто любит его. У меня на майке есть слова
Джобса: the only way to do great work is to love what you do. Это чисто аппостол Павел. Такой
человек не мог иметь грубый словать (по крайней мере когда стал личностью). Опять же, если бы
вы не лицемерили (вы же не говорите своему руководству — не балабольте, когда они балаболят)
я бы понял, что описание имеет недостатки. Но ваш словарь мне не подходит. Извините за
балабольство.

0 Ответить

НЛО прилетело и опубликовало эту надпись здесь

michael_v89 04.09.2017 в 07:24

С чего вы решили, что человек не говорит своему руководству, что они балаболят, когда они
балаболят? Только на основании вашего личного отношения к руководству? Ну так это говорит
только о вас, а не о вашем собеседнике.

У меня на майке есть слова Джобса

Его слова "I'm brutally honest, because the price of admission to being in the room with me is I get to
tell you your full of shit if you're full of shit, and you get to say to me I'm full of shit, and we have some
rip-roaring fights." вы тоже на майку повесите?

0 Ответить

michael_v89 02.09.2017 в 16:42

Я сужу по описанию в вашей статье. Что вам мешало показать в ней то, что я назвал ерундой? А
описана у вас самая обычная шаблонизация, из которой вы почему-то сделали проблему.
https://habr.com/ru/post/336574/ 7/13
29.10.2021, 19:33 Генерация документов. Легко и свободно / Хабр

Такие слова как Хрень, дребедень, ерунда -это не из словаря ИТишника.

А где в вашей статье ИТ-детали? Нет, такие умные слова как "XML" или "шаблон" не являются
техническими деталями. Вы просто сказали, что они у вас есть, но не показали, как они
используются. Нет ИТ-информации, значит и обсуждать из этой области нечего.

Стив Джобс так не выражался.

Тут вот написано, что он иногда и посильнее выражался.

0 Ответить

PennyLane 04.09.2017 в 21:04

Сдаюсь. Вообще, ссылка на авторитеты — это схоластика. Просто я хотел сказать, помягче что-ли
как-то надо. У меня тонкая душевная организация. Я сплошь из ошибок состою. А вы про
балабольство. Дрожу весь. Но теперь вижу, здесь и похуже индивиды водятся. Лично я хотел бы
номального разговора, если тема вдруг интересна. А балаболить попусту незачем.

0 Ответить

michael_v89 04.09.2017 в 21:38

Ага. Здесь на Хабре котируются факты. Если тема интересна, ожидают фактов — как вы это
сделали и зачем. Это будет нормальный разговор ИТ-специалистов.

А зачем вы ссылаетесь на авторитеты, если это схоластика, к которой вы относитесь негативно?

0 Ответить

https://habr.com/ru/post/336574/ 8/13
29.10.2021, 19:33 Генерация документов. Легко и свободно / Хабр

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

ПОХОЖИЕ ПУБЛИКАЦИИ

5 сентября 2019 в 14:49

Генерация документов с помощью ONLYOFFICE DocumentBuilder

+13 4.3K 39 7 +7

31 августа 2019 в 00:07

Документируем процесс подключения и генерации документов в будущей ERP-системе

+12 2.7K 21 0

24 января 2017 в 09:05

Генерация документов в doc, excel, pdf и других форматах на сервере

+30 37K 253 20 +20

МИНУТОЧКУ ВНИМАНИЯ Разместить

Событие Опрос Промо

https://habr.com/ru/post/336574/ 9/13
29.10.2021, 19:33 Генерация документов. Легко и свободно / Хабр

Конкурс технических статей Деньги или свобода: судьба В шортах уже зябко, а промокод
Технотекст 2021 опенсорса в финтехе согревает

ЗАКАЗЫ

Коллективная работа с документами в CRM на Laravel


20000 руб./за проект · 6 откликов · 23 просмотра

Векторизация обьектов для навигационной карты


500000 руб./за проект · 6 откликов · 40 просмотров

Разработка и поддержка плагина на вордпресс


50000 руб./за проект · 3 отклика · 35 просмотров

В готовое Swift приложение внести новый функционал


80000 руб./за проект · 9 откликов · 43 просмотра

Доработка сайта на Wordpress


45000 руб./за проект · 3 отклика · 71 просмотр

Больше заказов на Хабр Фрилансе

ЛУЧШИЕ ПУБЛИКАЦИИ ЗА СУТКИ

вчера в 21:49

Проблемы репрезентации Империи в Звёздных войнах


https://habr.com/ru/post/336574/ 10/13
29.10.2021, 19:33 Генерация документов. Легко и свободно / Хабр

+95 18K 53 61 +61

сегодня в 13:50

Леденящие душу собеседования: истории эйчаров

+52 14K 19 42 +42

сегодня в 00:01

О недавней уязвимости в банкоматах Diebold Nixdorf

+39 7.1K 15 24 +24

сегодня в 09:18

Лучший способ выбора случайной точки в круге

+31 3K 34 23 +23

вчера в 20:02

Лампы-свечки из Fix Price

+30 6.4K 8 13 +13

ЧИТАЮТ СЕЙЧАС

Леденящие душу собеседования: истории эйчаров


14K 42 +42

Дефицит специалистов не только в IT — он везде. Но денег не платят


80K 554 554
https://habr.com/ru/post/336574/ 11/13
29.10.2021, 19:33 Генерация документов. Легко и свободно / Хабр
80K 554 +554

«Бургер Кинг» пожаловался в ФАС на Telegram из-за запрета на рекламу фастфуда в мессенджере
3.1K 32 +32

Почему в фэнтези говорят на британском английском


1.4K 2 +2

Проблемы репрезентации Империи в Звёздных войнах


18K 62 +62

Новинки SOLIDWORKS на примере сборки батискафа «Немо» (6000 деталей)

Турбо

Ваш аккаунт Разделы Информация Услуги

Войти Публикации Устройство сайта Реклама

Регистрация Новости Для авторов Тарифы

Хабы Для компаний Контент

Компании Документы Семинары

Авторы Соглашение Мегапроекты

Песочница Конфиденциальность

https://habr.com/ru/post/336574/ 12/13
29.10.2021, 19:33 Генерация документов. Легко и свободно / Хабр

Настройка языка

О сайте

Техническая поддержка

Вернуться на старую версию

© 2006–2021 «Habr»

https://habr.com/ru/post/336574/ 13/13

Вам также может понравиться