kazakuper
(Adi Abilgaziyev)
02.Апрель.2023 12:48:24
1
Добрый день! У меня есть простой screen, на котором я сам написал филды заполнения для формы (то есть это просто xml страница с css внутри). Я хочу что бы при заполнений формы я мог скачать её в pdf формате не сохраняя в базе как entity.
Я знаю что есть Reports API, через который можно задавать параметры, но так и не понял как его использовать. Хотелось бы увидеть пример использования.
Заранее спасибо
krivopustov
(Konstantin Krivopustov)
08.Апрель.2023 14:01:38
2
Добрый день!
Можно сделать примерно так:
Создаете шаблон в DOCX:
Создаете отчет с кодом demo, в полосе Root в Groovy-датасете пишете код:
return [[
'name':params['name'],
'description':params['description']
]]
Создаете экран с полями и кнопкой:
<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>
По кнопке вызываете печать отчета с передачей в него параметров из полей:
@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 лайка