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

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

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

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

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

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

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价格,点击查看。

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

  1. flexcell控件 许可证信息没有找到_报表控件 ActiveReports 全面迎来 .Net Core 时代

    报表控件ActiveReports全面迎来 .Net Core 时代!一键创建 .Net Core MVC 项目 近期,葡萄城报表控件ActiveReports V14.0 正式发布,全面支持 .NE ...

  2. 只用最适合的 | 主流 .NET 报表控件全面对比

    随着 .NET 平台的出现,报表相关的开发控件随着而来,已经有若干成熟的产品可供开发人员使用,本文旨在通过从不同维度对比目前最流行的3款 .NET报表控件:FastReport.Stimulsoft. ...

  3. FastReport_V6.X for Delphi 10.4 ,最快的报表控件上市了!

    FastReport_V6.X for Delphi 10.4 ,最快的报表控件上市了! FastReport 是非常强大的报表控件,相比QuickReport,ReportBuilder更加灵活,又 ...

  4. 只用最适合的! 全面对比主流 .NET 报表控件:水晶报表、FastReport、ActiveReports 和 Stimulsoft...

    原文:只用最适合的! 全面对比主流 .NET 报表控件:水晶报表.FastReport.ActiveReports 和 Stimulsoft 前言 随着 .NET 平台的出现,报表相关的开发控件随之出 ...

  5. 转发:只用最适合的! 全面对比主流 .NET 报表控件:水晶报表、FastReport、ActiveReports 和 Stimulsoft

    前言 随着 .NET 平台的出现,报表相关的开发控件随之出现,目前已经有若干成熟的产品可供开发人员使用,本文旨在通过从不同维度对比目前最流行的4款 .NET报表控件,给所有报表开发人员在做产品选型时一 ...

  6. 报表控件FastReport与StimulSoft功能对比

    FastReport与StimulSoft是公认的功能最强大的报表控件,两者相比各有各的优势,本文将为大家做详细介绍. 功能介绍 FastReport FastReport的报表生成器(无论VCL平台 ...

  7. FastReport报表控件内置函数介绍之字符处理函数

    概述:本文介绍了FastReport报表控件的字符处理函数. 合计函数   算术运算函数及其他 字符处理函数 Str(<value>).将包含的数值转换成字符. Copy(<stri ...

  8. 4款.Net报表控件优势对比分析

    根据统计,目前市面上使用最为广泛的.NET报表控件有4款,分别为FastReport .NET,XtraReports Suite,ActiveReports 7 for .NET和Stimulsof ...

  9. VS2019 ReportViewer报表控件及设计器安装方法

    1.报表控件: 单机工具→NuGet包浏览器→程序包管理控制台 在最底下输入此命令:Install-Package Microsoft.ReportingServices.ReportViewerCo ...

  10. access字段属性设置下拉列表_可嵌入您系统的.NET 报表控件ActiveReports:带状列表组件...

    葡萄城报表控件ActiveReports V14.0 全面支持 .NET Core平台.同时 ActiveReports的桌面报表设计器UI也全面增强,报表预览方式得以全面优化,报表设计能力得以大幅提 ...

最新文章

  1. 拯救尴尬:鉴黄神器NSFW JS开源了!
  2. 【Vegas原创】解决System.Web.Extensions版本冲突方法
  3. java并发性是指什么_java – 什么是“非阻塞”并发,它与普通并发性有什么不同?...
  4. QQ协议分析及其还原(一)
  5. 哈密尔顿算法matlab,复杂制造过程最优哈密尔顿圈算法的MATLAB仿真与分析.doc
  6. 服务器热修复,热修复探究,hotfix,patch
  7. 安装electron-react-boilerplate遇到的问题
  8. Android开发环境搭建与入门Hello World
  9. 长语音识别_长文本语音识别_语音 识别 - 云+社区 - 腾讯云
  10. java构造函数的执行顺序,java构造函数和初始化函数的执行顺序
  11. 【QA】揭开知识库问答KB-QA的面纱1·简介篇
  12. 蓝桥杯2016年七届C/C++省赛C组第一题-报纸页数
  13. 【车牌识别】基于matlab GUI模板匹配车牌识别门禁系统【含Matlab源码 1091期】
  14. 饿了么UI框架表格的动态增减表单项里面有坑!
  15. 【转】Mac QQ截图保存在哪里?
  16. 小学生python编程写游戏_小学生C++趣味编程上下全2册+Python少儿趣味编程适合6-12岁儿童编程教程中小学生计算机程序设计创意零基础游戏编程书籍DK...
  17. Bandizip便携版右键菜单注册
  18. 我的世界手机有php的开服器下载地址,我的世界手机版怎么联机 PE手机版开服教程...
  19. python 实现MR
  20. 面向对象设计原则_面向对象的设计原则

热门文章

  1. Klipper 不支持中文Gcode文件名的解决办法
  2. IBM AI“新药发现”项目停止市场拓展
  3. nfc卡模式与标准模式_NFC(1)NFC简介,3种模式
  4. 拓嘉启远:拼多多店铺子账号设置,提高店铺效率
  5. java springboot宠物医院管理系统(毕业设计)
  6. 动手学 《动手学深度学习》(安装pytorch)
  7. 生成QQ/MSN/旺旺/SKYPE等在线状态图标
  8. ubuntu ssh远程连接
  9. html选择日期选择器
  10. echarts的tooltip提示框