了解缩略图的工作原理在使用Stimulsoft Demo、Stimulsoft Server和Stimulsoft Cloud时非常有用。例如,您可以在此处查看缩略图的实际效果 - 当侧边栏折叠时,将显示缩略图而不是资源列表。在本文中,我们将探讨 Stimulsoft 产品中报表、仪表板和 PDF 表单的缩略图(也称为预览)的作用。例如,缩略图显示在报表查看器中,允许用户快速直观地识别资源内容。
Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate)是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能,Stimulsoft Ultimate包含了所有内容!
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文件。此方法还会检测数据源是仪表板还是常规报表。
这样,可以根据需要随时生成报告的缩略图。
使用报告图像属性
每个报表、仪表板或 PDF 表单模板都可以在“报表图像”属性中包含自己的图像。该图像将用作缩略图,而不是自动生成的预览图。这适用于 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类,开发人员可以使用灵活的工具来管理任何集成场景中的缩略图。正确使用此功能可以改进导航,增强用户界面,并丰富在应用程序中与报表交互的整体体验。