WinForms时代结束,报表控件FastReport.NET开启FastReport.Core.Skia 时代!

要创建高质量的报告并将其正确导出为不同的格式(PDF、Word、Excel 等),必须使用图形引擎。从 .NET Framework 的最早版本开始,Microsoft 就将 GDI+ 及其包装器用作 System.Drawing 库的一部分。FastReport.NET长期以来一直使用相同的库来创建美观实用的报表。Mono 团队为 Unix 系统开发了他们的 GDI+ 版本:libgdiplus,供 System.Drawing.Common 使用。但是,这种方法并不完美。

FastReport.NET官方版下载

GDI+ 问题

与 Windows 不同,System.Drawing.Common 非常特别地适用于其他平台。我们从用户那里收到的这些常见问题包括不正确的渲染文本大小、缺乏 RTL 语言支持、不正确的字间距、句子中的断字错误、缺乏 ARM 处理器支持以及 libgdiplus 普遍不稳定(“内存不足”,在在多线程配置中工作)。

您可以通过从支持 Pango/Cairo的 Mono 存储库手动重建 libgdiplus 来解决其中一些问题 。无论如何,这很不方便,尤其是在您的应用程序使用容器化的情况下。其他问题会影响除 Windows 之外的所有操作系统上的报告导出质量。

结果,微软正式放弃了对非 Windows 平台上的 System.Drawing.Common 的支持。这是他们的帖子:“重大变化:System.Drawing.Common 仅在 Windows 上受支持 - .NET | 微软文档“。之后,我们的用户开始积极询问如何在 Linux 或 macOS 上使用 FastReport 的强大功能。

解决方案

开发了一个特殊版本的 FastReport.Core,它使用 Skia 作为图形引擎及其 .NET 的包装器 - SkiaSharp,称为 FastReport.Core.Skia。FastReport.Core.Skia 和 FastReport.Web.Skia 包在我们的私有 NuGet 服务器上可用。

如果您在 Linux 下使用 libgdiplus 渲染文本时遇到问题,我们强烈建议您尝试 FastReport.Core.Skia。要在您的应用程序中使用它,只需更改包名称 FastReport.Core -> FastReport.Core.Skia,然后在 Linux 上添加以下包(在 Windows 和 macOS 上,会自动添加必要的包):

  • SkiaSharp.NativeAssets.Linux ( NuGet )。
  • HarfBuzzSharp.NativeAssets.Linux ( NuGet )。

现在让我们在 Linux/macOS 上比较 FastReport.Core 与 libgdiplus 和 FastReport.Core.Skia。

首先我们来看看在Linux Ubuntu 20.04上导出为HTML格式后文本长度的错误计算。在下面的图片中,您可以看到带有 Pango 的 libgdiplus,即使从源代码重建,也不能正确显示第一行的结尾,丢弃一些信息,Skia 工作正常。

Linux、libgdiplus + Pango 上不正确的 HTML 导出

在 Linux、SkiaSharp 上正确的 HTML 导出

WinForms时代结束,报表控件FastReport.NET开启FastReport.Core.Skia 时代!_第1张图片

Linux 上 RtL 文本的 PDF 导出不正确,带有 Pango 的 libgdiplus 将所有文本写入 1 列 8 页

WinForms时代结束,报表控件FastReport.NET开启FastReport.Core.Skia 时代!_第2张图片

在 Linux、SkiaSharp 上正确导出 RtL 文本的 PDF 我们可以看到类似的情况,它们的正确显示需要特殊的字体:

WinForms时代结束,报表控件FastReport.NET开启FastReport.Core.Skia 时代!_第3张图片

Linux 上的文本 PDF 导出不正确,使用 Pango 的 libgdiplus

WinForms时代结束,报表控件FastReport.NET开启FastReport.Core.Skia 时代!_第4张图片

更正 Linux、Skia 上文本的 PDF 导出。为每个文本自动选择适当的字体。

WinForms时代结束,报表控件FastReport.NET开启FastReport.Core.Skia 时代!_第5张图片

在以前不受支持的场景中尝试 FastReport.Core.Skia:在具有 ARM 处理器的设备上工作,例如 Apple M1。让我们创建一个 .NET 6 控制台应用程序(因为只有 .NET 6 原生支持 macOS 的 ARM 架构)并从我们的演示中导出 Simple List.frx 报告。

WinForms时代结束,报表控件FastReport.NET开启FastReport.Core.Skia 时代!_第6张图片

System.Drawing.Common 从 7.0 版本开始将完全停止支持非 Windows 系统,因此上面给出的 libgdiplus 示例很快将完全不起作用。

此版本的 FastReport.Core 不能与 System.Drawing API 一起使用:在某些 .NET Framework 项目、NET Core 3.1/NET 5+ WindowsForms 项目以及具有 System.Drawing.Common 的项目中,由于此修改的具体情况。

以上就是FastReport Mono V2022.3新版本更新的重要内容,更多相关内容会在后续为大家一一介绍,大家可以点击FastReport Mono使用教程查看哦! 更多产品授权信息点击查看FastReport Mono价格,点击查看。

你可能感兴趣的:(.net,windows,microsoft,fastreport,报表控件)