Stimulsoft Reports
↑ 5.6 PDF и печатные формы на клиенте · ← Предыдущая
Зачем это на собесе
Коммерческие дизайнеры отчётов встречаются в корпоративных системах: как встроить и чем ограничены.
Объяснение
Stimulsoft Reports — коммерческий пакет для создания отчётов: JS-библиотеки (Viewer, Designer, Engine), версии для .NET, PHP, Java. Отчёт — шаблон (.mrt, JSON) с источниками данных, группировками, диаграммами, вычислениями.
import { Stimulsoft } from "stimulsoft-reports-js/Scripts/stimulsoft.reports";
import "stimulsoft-reports-js/Scripts/stimulsoft.viewer";
Stimulsoft.Base.StiLicense.key = import.meta.env.VITE_STIMULSOFT_KEY;
const report = new Stimulsoft.Report.StiReport();
report.loadFile("/templates/invoice.mrt"); // или loadDocument(json) из API
const data = new Stimulsoft.System.Data.DataSet("Data"); data.readJson(invoiceJson);
report.regData("Data", "Data", data); // данные в шаблон
const viewer = new Stimulsoft.Viewer.StiViewer(new Stimulsoft.Viewer.StiViewerOptions(), "viewer", false);
viewer.report = report; viewer.renderHtml("viewerContainer"); // просмотр, печать, экспорт (PDF, Excel, Word)
// Экспорт без показа
report.renderAsync(() => report.exportDocumentAsync((pdf) => save(pdf, "invoice.pdf"), Stimulsoft.Report.StiExportFormat.Pdf));Компоненты: Designer (веб-конструктор шаблонов для пользователей), Viewer (просмотр/печать/экспорт), Engine (рендер на клиенте или сервере).
Схемы использования:
| Схема | Плюсы | Минусы |
|---|---|---|
| Рендер на клиенте | нет нагрузки на сервер, интерактивность | тяжёлый бандл, данные на клиенте, зависимость от браузера |
| Рендер на сервере (.NET) | единый результат, безопасность данных, большие объёмы | инфраструктура |
| Шаблоны хранятся в БД/API | редактирование без релиза | версионирование, права |
Практика: шаблоны версионируются и хранятся на сервере, данные передаются в отчёт как JSON, права на просмотр проверяются на бэкенде; лицензионный ключ управляется через конфигурацию окружения; кириллические шрифты должны быть подключены.
Альтернативы: FastReport, DevExpress Reports, Telerik Reporting, Crystal Reports, JasperReports; open-source — pdfmake, QuestPDF/PDFsharp (сервер), Paged.js, @react-pdf (для React).
Нюансы и подводные камни
- Лицензия коммерческая: ключ в клиентском коде виден — учитывайте условия использования.
- Размер библиотек — загружайте лениво (
import()), только на страницах отчётов. - Персональные данные в шаблонах/данных на клиенте — вопросы безопасности.
- Совместимость версий Designer/Viewer/Engine и формата
.mrt. - Кастомизация внешнего вида ограничена.
Практика
- Встройте Viewer и покажите отчёт по данным из API.
- Реализуйте экспорт в PDF и Excel.
- Оцените плюсы и минусы клиентского и серверного рендера для вашей задачи.
Вопросы с ответами
Когда использовать готовый дизайнер отчётов?
Когда пользователи должны сами настраивать шаблоны и требуется богатый функционал (группировки, диаграммы, экспорт) без разработки.
Клиентский или серверный рендер отчётов?
Клиентский — для интерактивности и малых объёмов, серверный — для безопасности, больших данных и единообразия.