В этой статье рассмотрим, что такое эскизы (миниатюры) отчетов, дашбордов и PDF-форм в продуктах Stimulsoft. Миниатюры отображаются, например, во вьювере отчетов и позволяют быстро визуально определить содержимое ресурса. Понимание работы эскизов полезно при использовании Stimulsoft Demo, Stimulsoft Server и Stimulsoft Cloud. Посмотреть миниатюры в действии можно, например, здесь - при свернутой боковой панели вместо списка ресурсов отображаются их эскизы.
Продукты Stimulsoft позволяют как автоматически генерировать миниатюры, так и управлять этим процессом вручную через специальный класс StiThumbnailHelper. Также можно использовать пользовательское изображение вместо автоматически сгенерированного эскиза.
Пользователю не нужно выполнять дополнительных действий. В этом случае генерируется и сохраняется эскиз, который используется до тех пор, пока не будет удален (или не будет удален сам отчет). Основной недостаток — эскиз не обновляется при изменении отчета. Его можно пересоздать только вручную, удалив старый файл миниатюры.
Таким образом, в любой момент можно сгенерировать эскизы отчета.
Изображение сохраняется внутри файла отчета. Если добавить/указать файл большого размера, это приведет к увеличению общего размера файла отчета.Однако, чуть выше, при автоматическом генерировании эскизов, мы говорили, что пересоздать эскиз можно лишь удалив предыдущий. Так вот если вы интегрируете Stimulsoft в собственное приложение, можно динамически генерировать миниатюру и записать ее в свойство ReportImage:
Использование миниатюр (эскизов) в Stimulsoft — это простой и эффективный способ визуального представления отчетов, дашбордов и форм. Их можно создавать автоматически или вручную, а также заменять на пользовательское изображения. Благодаря классу StiThumbnailHelper разработчик получает гибкий инструмент для управления эскизами в любых сценариях интеграции. Грамотное использование этой возможности улучшает навигацию, пользовательский интерфейс и общее восприятие отчетов в приложении.
Автоматическое создание эскизов
Миниатюры создаются автоматически при добавлении отчета в:- Stimulsoft Server и Stimulsoft Cloud – при первом добавлении в рабочее пространство.
- Stimulsoft Demo – при первом добавлении в список ресурсов.
Пользователю не нужно выполнять дополнительных действий. В этом случае генерируется и сохраняется эскиз, который используется до тех пор, пока не будет удален (или не будет удален сам отчет). Основной недостаток — эскиз не обновляется при изменении отчета. Его можно пересоздать только вручную, удалив старый файл миниатюры.
Управление эскизами с помощью StiThumbnailHelper
При интеграции Stimulsoft в пользовательский проект или приложение, можно воспользоваться классом StiThumbnailHelper. При помощи этого класса можно управлять процессом создания миниатюр.- GetThumbnailPath(string path) формирует путь к файлу миниатюры .thumb для указанного отчета, учитывая масштабирование (скаллинг) в операционной системе.
- SaveThumbnail(StiReport report, string path) возвращает массив байтов изображения, то есть миниатюру первой построенной страницы отчета в файл .thumb. Можно использовать только для построенного отчета, или вызвать метод построения отчета report.Render().
- GetThumbnail(string path) возвращает байт-массив указанной миниатюры отчета из файла .thumb. Если файл не существует, возвращается null.
- GetThumbnailFromTemplateAsync(string path) асинхронно получает миниатюру отчета из файла .mrt.
- GetThumbnailFromTemplate(string path, bool skipImage = false) синхронно создает объект StiThumbnailReport, содержащий: путь, имя отчета, флаг дашборда (`IsDbs`), изображение. В случае, если миниатюра была ранее сохранена — загружает её. Если нет — загружает отчет, генерирует изображение и сохраняет .thumb. Также этот метод учитывает, дашборд это или обычный отчет.
Таким образом, в любой момент можно сгенерировать эскизы отчета.
Использование свойства Report Image
Каждый шаблон отчета, дашборда или PDF-формы может содержать собственное изображение в свойстве Изображение отчета (Report Image). Это изображение будет использоваться в качестве миниатюры вместо автоматически сгенерированного эскиза. В том числе, в Stimulsoft Demo, Stimulsoft Server, Stimulsoft Cloud. Таким образом, например, можно задать фиксированное изображение, которое будет показываться в интерфейсе вне зависимости от содержимого отчета. ОБРАТИТЕ ВНИМАНИЕ!Изображение сохраняется внутри файла отчета. Если добавить/указать файл большого размера, это приведет к увеличению общего размера файла отчета.Однако, чуть выше, при автоматическом генерировании эскизов, мы говорили, что пересоздать эскиз можно лишь удалив предыдущий. Так вот если вы интегрируете Stimulsoft в собственное приложение, можно динамически генерировать миниатюру и записать ее в свойство ReportImage:
...
//Load report
var report = new StiReport;
var templatePath = "Reports\\MyReport.mrt";
report.Load(templatePath);
// Generate a new thumbnail from the report template
var thumbnail = await Stimulsoft.Wizard.Wpf.Info.Helper.StiThumbnailHelper.GetThumbnailFromTemplateAsync(templatePath);
// Convert byte array to System.Drawing.Image
using (var ms = new MemoryStream(thumbnail.Image))
{
// Assign generated thumbnail to the ReportImage property
report.ReportImage = System.Drawing.Image.FromStream(ms);
}
// Call report in designer where ReportImage will be used as the report thumbnail
report.Design();
...
Фактически для отчета на лету генерируется новый эскиз, и сохраняется в свойстве Изображение отчета. Таким образом можно обновить миниатюру без удаления существующего файла отчета или эскиза.Важный момент – анимация
Есть один важный момент при генерировании миниатюр - анимация, что особенно касается дашбордов. Дело в том, что для отчета генерируется первая построенная страница, и фактически она выступает миниатюрой. В случае с дашбордами не существует состояния построен или не построен. Дашборд работает в режиме реального времени. Так вот, если анимация элементов не успела выполниться до конца, то эскиз не совсем точно будет соответствовать по содержимому. Например, диаграмма может быть построена лишь наполовину. Если необходимо четкое соответствие эскиза, необходимо учитывать время выполнения анимации.Использование миниатюр (эскизов) в Stimulsoft — это простой и эффективный способ визуального представления отчетов, дашбордов и форм. Их можно создавать автоматически или вручную, а также заменять на пользовательское изображения. Благодаря классу StiThumbnailHelper разработчик получает гибкий инструмент для управления эскизами в любых сценариях интеграции. Грамотное использование этой возможности улучшает навигацию, пользовательский интерфейс и общее восприятие отчетов в приложении.