Генерация пдф по форме

Добрый день! У меня есть простой screen, на котором я сам написал филды заполнения для формы (то есть это просто xml страница с css внутри). Я хочу что бы при заполнений формы я мог скачать её в pdf формате не сохраняя в базе как entity.

Я знаю что есть Reports API, через который можно задавать параметры, но так и не понял как его использовать. Хотелось бы увидеть пример использования.

Заранее спасибо

Добрый день!

Можно сделать примерно так:

  1. Создаете шаблон в DOCX:
    image

  2. Создаете отчет с кодом demo, в полосе Root в Groovy-датасете пишете код:

    return [[
        'name':params['name'], 
        'description':params['description']
    ]]
    

    image

  3. Создаете экран с полями и кнопкой:

    <window xmlns="http://jmix.io/schema/ui/window"
            caption="msg://demoScreen.caption">
        <layout expand="spacer" spacing="true">
            <textField id="nameField" caption="Name" datatype="string"/>
            <textField id="descriptionField" caption="Description" datatype="string"/>
            <button id="printBtn" caption="Print"/>
            <label id="spacer"/>
        </layout>
    </window>
    
  4. По кнопке вызываете печать отчета с передачей в него параметров из полей:

    @UiController("DemoScreen")
    @UiDescriptor("demo-screen.xml")
    public class DemoScreen extends Screen {
    
        @Autowired
        private UiReportRunner uiReportRunner;
        @Autowired
        private TextField<String> nameField;
        @Autowired
        private TextField<String> descriptionField;
    
        @Subscribe("printBtn")
        public void onPrintBtnClick(Button.ClickEvent event) {
            uiReportRunner.byReportCode("demo")
                    .addParam("name", nameField.getValue())
                    .addParam("description", descriptionField.getValue())
                    .runAndShow();
        }
    }
    

Демо-проект целиком:
demo.zip (110.9 КБ)

2 симпатии