彩票走势图

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

翻译|行业资讯|编辑:董玉霞|2022-09-21 16:45:07.790|阅读 151 次

概述:要创建高质量的报告并将其正确导出为不同的格式(PDF、Word、Excel 等),必须使用图形引擎。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

要创建高质量的报告并将其正确导出为不同的格式(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 工作正常。

FastReport.NET

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

FastReport.NET

在 Linux、SkiaSharp 上正确的 HTML 导出

FastReport.NET

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

FastReport.NET

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

FastReport.NET

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

FastReport.NET

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

FastReport.NET

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

FastReport.NET

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价格,或者咨询慧都在线客服。

FastReport Mono技术QQ群:536197826      欢迎进群一起讨论


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP