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

news/2024/5/19 10:36:08/文章来源:https://blog.csdn.net/HD202202/article/details/126976053

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_11594.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一篇文章 mybatis 综述

mybatis框架可以让程序员只需专注于写sql语句 框架就是半成品,将公共的部分固定下来,非公共的部分你自己开发就行 三层架构: 界面层Conttroller层:用来接收客户端的输入,调用业务逻辑层Service层,返回结果…

关于Facebook营销的十个常见问题,一次性讲清楚!

--- NO.1--- 为什么做Facebook营销? 作为全球最大的社交媒体,Facebook月活用户已达到了惊人的29亿,并且这个数据还在持续增长中,这意味着全球几乎一半人都会出现在Facebook上。很多企业对Facebook的关注点,也从是否做…

VMware Explore 大会发布重磅云上技术之外,VMware 有哪些前沿探索?

编辑 | 宋慧 出品 | CSDN 云计算 最近,VMware 举办了年度技术大会 VMware Explore,重磅发布了其在多云趋势下的多个技术产品组合,包含了云基础架构、云原生、网络与安全、远程混合办公等等。不过,在这些优势领域的产品之外&#…

系统架构与设计(1)- 权限系统的设计以及主流的五种权限模型

作者:码猿技术专栏来源:https://juejin.cn/post/7121977695197970463 ------------------------------------------------------------------- 这篇文章就来介绍一下权限系统的设计以及主流的五种权限模型。权限管控可以通俗的理解为权力限制,即不同的人由于拥有不同权力,他…

阿里云国际站代理商:FFmpeg 处理音视频文件的常用方法

阿里云代理商(聚搜云)专业服务于阿里云ECS服务器采购、阿里云Ddos采购、阿里云waf采购、对象存储OSS、阿里云企业邮箱采购、阿里云国际站代理商、阿里云国际站充值、云安全中心(态势感知)、阿里云高可用云数据库RDS、web应用云waf…

YOLO系列目标检测算法-Scaled-YOLOv4

YOLO系列目标检测算法目录 YOLO系列目标检测算法总结对比YOLOv1YOLOv2YOLOv3YOLOv4 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6- 文章链接 YOLOv7- 文章链接 本文总结: 提出一种网络缩放方法,使得基于CSP的YOLOv4可以上下伸缩,以适…

2019Linux系统教程189讲-08_基于LAMP架构部署商城系统

任务需求 1、任务具体要求 使用yum(dnf)工具一键部署LAMP环境 发布电商项目上线 ① 能够实现web界面注册会员账号 ② 能够实现web界面进行后台商品及会员的管理 2、项目选型 ㈠ PHPSHE商城系统概述 PHPSHE商城系统是将商品管理、品牌管理、规格管理、折扣管理、拼团管理、…

【Electron】常用小功能实现合集

一、前言 本篇主要介绍在electron项目开发过程中,一些实用小功能点的实现。比如设置开机自启动、只允许打开一个应用、设置electron项目基地为中文、获取当前的系统数据等等。 二、功能点 接下来咱们就逐一来说一说这些功能点是如何实现的。 1.设置应用开机自启…

MySQL索引结构B+树

数据结构图示例网站:Data Structure Visualization 索引数据结构: 二叉树 红黑树 Hash表 B-Tree B-Tree,特点:(每个节点都存储key和data,叶子节点指针为null) 1、叶节点具有相同的深度&#x…

y140.第八章 Servless和Knative从入门到精通 -- Serving及实践(四)

5.Serving及实践 5.1 Knative Serving工作模式 Serving的工作模式,上图从一个更大的全景图上了解Serving以及它与istio进行结合的时候它们的工作逻辑,Serving有4个关键组件,最关键的组件就是kservice,kservice本身会有两个非常重要的组件组成,一个叫做configuration也就是…

linux驱动_uart

linux uart驱动基础知识下面链接这篇文章写得很完备,我没必要再介绍了,就写目前项目的代码,方便以后重温。 Linux的tty架构及UART驱动详解 本项目驱动文件包括: /kernel/drivers/sstar/serial/ms_uart.c # 主要实现文件 /kerne…

HTML 头部

html 中 <head> 元素包含了所有的头部标签元素。在 <head> 元素中可以插入脚本(scripts)、样式文件(CSS)及各种 meta 信息。 一般来说&#xff0c;可以添加在头部区域的元素标签有&#xff1a;<title>、<style>、<meta>、<link>、<scri…

借助实例,轻松掌握 Makefile

实例1&#xff1a;hello world 编辑 Makefile all:echo "hello world"编译执行 $ make $ make all 结果输出 语法说明 echo 前面必须只有 TAB&#xff08;即你键盘上的 TAB键&#xff09;&#xff0c;且至少有一个 TAB&#xff0c;不能用空格代替。 实例2&#xff…

python相关知识的巩固-《python与量化投资从基础到实战》的python基础部分

python与量化投资从基础到实战数据格式numpypandasSciPy 插值 积分 优化 图像处理 特殊函数OLS 回归分析插值正态性检验凸优化matplotlib 绘图的始祖&#xff0c;适合绘制简单的统计图表。Seaborn 绘制美观的图表Scikit-Learn 机器学习常用的第三方模块决策树支持向量机朴素贝叶…

Flink SQL解析嵌套Json数据测试过程调研

一、背景 测试需求->流式计算->json嵌套类型数据&#xff0c;流式计算的流程是基于&#xff0c;将配置的任务&#xff0c;转化为flink sql&#xff0c;然后提交到集群上&#xff0c;执行计算任务的过程&#xff0c;所以&#xff0c;除基本功能测试以外&#xff0c;需要考…

前端单元测试---孤勇者级教程

《孤勇者》最近火爆的一塌糊涂&#xff0c;占领了小学生、甚至幼儿园&#xff0c;连我家2岁多的儿子尽然也会哼几句。虽然他以为这首歌是奥特曼的主题曲。 回到正题&#xff0c;现代前端项目的工程化、模板化日益壮大&#xff0c;各种类库框架层出不穷&#xff0c;整个行业俨然…

JavaScript日期库之date-fn.js

前言 用官网的话来说&#xff0c;date-fn.js 就是一个现代 JavaScript 日期实用程序库&#xff0c;date-fns 为在浏览器和 Node.js 中操作 JavaScript 日期提供了最全面、但最简单和一致的工具集。那实际用起来像它说的那么神奇呢&#xff0c;下面就一起来看看吧。 安装 安装的…

新的 WALLET 奖励倍数在 Ambire 上线,现在可以获得特殊福利!

Ambire 钱包奖励那些在以太坊上持续活跃的用户。 &#x1f4e3; 呼叫以太坊的铁杆粉丝&#xff01;我们专门为你们准备了最新的 $WALLET 奖励倍数来帮助你赚取更多的加密货币&#xff0c;前提是你已经保存好 Ambire 账户&#xff08;用于接收奖励&#xff09;。 听上去不错&…

Redis知识点总结-钊兵的笔记

简介 什么是Redis? redis是c语言开发的高性能的k-v形式的NoSQL型数据库&#xff0c;数据存储在内存中&#xff0c;诞生于意大利优点&#xff1a;存取速度快,官方称 读取速度会达到30万次每秒,写速度在10万次每秒,具体限制于硬件.缺点&#xff1a;对持久化支持不够良好,所以r…

flink的Standalone-HA模式安装

前言 本文使用flink1.14.5版本&#xff0c;介绍standalone-HA模式的安装。 此模式时高可用架构&#xff0c;采用zookeeper协调多个JobManager&#xff0c;保持每时每刻有一个运行中的JobManager,其余JobManager处理stand by状态。 因为涉及到运行过程中的状态数据的存储&…