Документация Engee
Notebook

Автоматическая генерация отчётов по ГОСТ в DOCX из скриптов Engee

На основе скриптов Engee можно создавать документы Word с титульным листом, в которые автоматически попадают все выходные данные документа, а также текст, код и результаты выполнения скриптов.

Описание примера

В этом проекте мы демонстрируем, как организовать генерация отчётов по гост на основе интерактивных скриптов, выполненных в Engee.

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

Генератор осуществляет прямую трансляцию из одного формата в другой:

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

Ограничения генератора

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

После загрузки параметров и создания исходного шаблона, наш алгоритм наполняет шаблон строками из указанного файла .ngscript.

Шаблон документа

Первым делом генератор загружает шаблон документа, который он будет наполнять данными. Его можно указать в аргументе команды, стандартное название шаблона: template.docx. Если шаблонного файла с нужным названием нет в указанной директории, генератор создаёт такой файл.

Вы можете скачать, отредактировать этот файл и загрузить его обратно в файловый браузер Engee. Генератор найдёт в нём поля с разметкой типа {{WORK_TITLE}}, куда подставит информацию на место всех полей, по возможности соблюдая стили документа.

Источники данных

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

Что касается титульного листа и колонтитулов, генератор первым делом загружает выходную информацию документа из файла config.toml. Это позволяет нам не перегружать команду запуска генератора отчёта расширенным количеством аргументов, хотя их тоже можно указать в качестве дополнительных параметров.

Три способа задания данных для форматирования документа

  1. Задать в качестве аргументов команды generate_report
  2. Хранить в сопровождающем файле config.toml
  3. Поместить файл config.toml в одну из ячеек (текстовую, в виде врезки, или кодовую, в виде комментария)

Как запустить скрипт генератора отчётов

Отчет можно сгенерировать одной командой:

In [ ]:
include("$(@__DIR__)/scripts/generate_report.jl")
generate_report("notebook_test.ngscript", output_path="Отчет.docx")
(+) Отчёт создан: Отчет.docx

Для более успешной генерации отчета

При размещении в финальном документе графики и изображения не масштабируются. Лучше сразу выставить им желаемый dpi или размер в пикселях, например при помощи команды gr(size=(600,400)). Повторим также что интерактивные графики не поддерживаются в документах Word.

Некоторые LaTeX конструкции не поддерживаются, поэтому рекомендуется начинать с более простых уравнений.

Заключение

Этот небольшой проект показывает, как вы можете создавать генераторы документации из скриптов Engee. Доработав его вы можете автоматизировать документооборот, включающий генерацию снимков моделей и импорт данных из других сопутствующих файлов.