ReportBro用户指南

0
(0)

前面文章分享了ReportBro工具的实际使用案例: 强大的PDF报表工具ReportBro。以将官网的用户指南翻译的中文版,算是一个尝试、学习的过程。

原文链接:https://www.reportbro.com/doc/userguide

设计元素

  • 将设计元素拖拽到你的模板上
  • 在模板或菜单面板上选择一个元素并点击此元素
  • 根据您的需求配置此元素的属性和样式
  • 选中多个元素时,可展示对齐选项
元素说明
文本(Text)文本元素可由静态文本、参数、以及静态文本和参数共同构成, 或者是可解析的表达式(参考表达式语法)。预定义样式也可用于文本元素.
启用富文本可以在一个文本元素中使用不同的样式。 富文本还允许使用参数,但不支持表达式解析。
更多: 参考视频教程:使用文本元素
水平线(Horizontal line)水平线支持可调整的宽度、高度和颜色
图片(Image)ReportBro支持两种常用的图像格式: PNG和JPG。
支持的文件扩展名: .png .webp .jpg 和 .jpeg。
添加图片的方式
1. 上传静态图像: 直接上传图片文件
2. 定义一个图像参数:利用图像参数动态包含图片
打印和缩放
– 在打印时,ReportBro可通过对图像进进行相应的缩放,以优化图片的质量。
– 保持纵横比以防止失真并保持打印质量。
– 图像可以调整到其实际高度和宽度,确保不会拉伸。
更多:参考教程:在报表中添加图像
表格(Table)表格用于展示值的列表,例如 收据、统计报表和发货单项目。在表格中打印动态数据时,需要将数据源设置为 列表参数。
选择和导航
在表格上单击时,选中表格本身。
在表格中双击时,选中表格中的内容元素,可对内容元素进行详细配置。
配置和样式
配置表格内容元素的方式和配置文本元素的方式相同。
表格配置的等级
1. 表格元素:
– 包含数据源的定义。
– 允许启用/禁用表头和表尾。
– 在进行分组展示时,设置内容行的数量(参考下一段:数据分组)。
– 在默认情况下,一个表格包含一个内容行用于遍历列表参数。
2. 表格内容元素:
– 配置内容元素
– 在打印设置中,启用“总在相同页面展示”,可以在换页时阻止拆分行。
3. 表头和表尾元素(当启用时):
– 当表格的数据超过多页时,表头可在每页上都展示。
更多:参考教程: 创建表格
数据分组
对于在表格内将数据行分组展示的需求,ReportBro添加了强大的层,用于组织数据。
1. 内容行的需求:
– 为了创建分组表格至少需要定义2个内空行。
– 第一个内容行的作用是接受分组表达式
– 另外一个内容行的作用是保存实际的数据。
2.配置内容行:
– 单击表格,并找到“内容行”配置项。
– 在菜单面板中,可以找到所有的内容行。
– 选择第一个内容行入口,并在打印配置中录入一个“分组表达式”
– 此行只会在分组表达式的值变化的时候才打印。
3. 分组头和分组尾:
– 对于每个分组,都可以对分组头和分组尾的显示进行配置。
– 为了在每个分组上都显示一个分组头, 需要确认包含“分组表达式”的内容行显示在包含实际数据的内容行上方(没有分组表达式的行)
更多:参考教程: 表格分组
隐藏表格列
通过控制表格列的显示条件,可以自定义表格列的展示。
1. 选择表格头列:
– 单击需要控制显示的格式头列。
2. 定义打印条件:
– 在打印设置中,设置一个显示条件,该列就会根据该条件进行展示或隐藏。
3. 调整空间:
– 如果你希望在某列隐藏时,其他列可以占用该列的空间,可以每个列头上都定义增长权重。
– 如果未设置增长权重,该列的宽度会保持预设的值。
更多: 参考教程: 根据条件打印表格列
动态表格列
当你的数据没有固定的列时,你需要同时在横向和纵向扩展表格, 你可以通过使用“简单列表参数”灵活实现这个功能。
更多: 参考教程: 在表格中使用动态列
条码(BarCode)ReportBro 支持多种编码
1. Code128
是一种高密度的一维条码,支持全部128个ASCII字符。 可访问ASCIItable.com查询全部支持的字符。
2. Code39
一种一维条码,定义了43个字符,包含了大写字母(A-Z)、数字(0-9)和一系列特殊字符(-, ., $, /, +, %, 空格)。
3. EAN-13、UPC:
EAN的全称是European Article Number 。是由国际物品编码协会 (GS1)制定的商品条码体系。EAN-13由一位前置码0 和12位数字组成。 UPC条码通常由12位数字组成,包括一个前导数字、5位制造商代码、5位产品代码和一个校验码.
4. EAN-8
EAN-8是EAN-13的简化简, 保持了和EAN-13相同的逻辑,由7位数字和一位检验码组成。
5. QR Code
可包含任意字符,也称为二维码。
对扫码设备的优化
调整样式选项以增强条码的可读性, 尤其是对于扫码设备的兼容性。
– 显示值: 在条码下方显示实际数值, 可用于QR Code以外的编码类型
– 条宽度: 调整一维条码中每个条的打印宽度
– 旋转: 可调整为纵向打印
– 边界条: 为扫码设备设置 EAN-8和EAN-13的参考点
– 纠错等级:在QR Code损坏或模糊时,扫码设备进行自动纠错的等级。
框架(Frame)框架是一种用于放置元素的灵活的容器,对于元素的组织和显示提供了增强。 以下是在使用框架时一些重要的功能点:
元素的容器: 框架可以容纳多个元素,创建一个分组。
动态尺寸: 同上
元素分组: 将多个元素组合到一起, 在分页时也可保持关系。
样式选项:对整个框架的边框和背景进行定制,增强可视化的表现。
位置:框架内的元素位置是相对于框架的,框架的位置是相对于页面的。
报表设计中的拖动影响:移动框架时,其内容跟随移动。框架提供了一种对元素位置批量移动的方式。
片段(Section)类似于表格, 片段的数据源是参数列表。与表格的核心差异是,片段不限于文件元素,可以像表格一样,提供灵活的分组功能。
段配置:
1.片段元素:
配置数据源,位置,是否显示片段头和片段尾。
2 片段头、内容、片段尾
调整每个元素的高度,选择是否根据内容进行压缩
设置“总在同页显示”以阻止分页时拆开元素
可选项: 报表有多页时,在每页都显示片段头
更多: 参数教程:使用片段打印数据
分页符(Page break自定义分页符

文档属性

文档属性用于定义报表模板的全局属性

*选择预定义的页面格式和页面方式,或者进行自定义

*在充足的布局空间内设置合适的内容高度,以适配多页的报表, 更多关于多页报表的内容,请参考: 多页布局的设计

* 设置打印区分的边距,元素无法被移动到边界以外。

*启用页眉/页脚,并设置尺寸和显示选项。 页眉/页脚也可以在多页报表时,在每页上都显示,或者仅首页不显示。

*显示文字和图片水印

*设置本地化样式,货币符号,千分位符号。本地化样式用于根据区域标准格式化日期时间、数字。

条件样式

使用表达式作为条件,控制文本样式和元素打印的行为

参考向导: 使用参数和表达式了解更多关于样式和打印条件的使用。

多条件样式可以合使用一系列规则进行控制, 参考向导: 使用多条件样式

显示模式和参数

在使用动态数据直译报表时, ReportBro提供了不同的参数类型。

数值和日期参数可以使用显示模式进行格式化。 ReportBro预定义了一组显示模式,也可使用自定义的语法进行自定义,参考:数值模式语法日期模式语法

通过设置参数的激活”允许为Null”选项,可以在参数值为空时显示为null。 当参数不允许为空时,可以设置一个默认值,比如当日期值为空时显示当前日期,当数值为空时显示0等

参数类型列表

类型说明
文本使用任意字符串
数值数值,可使用模式进行格式化展示
使用$符号的数值模式会替换为现金符号
更多关于模式的说明,请参考 关于模式
布尔布尔类型,真或假
日期使用 datetime.date or datetime.datetime 或 ISO 8601 标准格式 (YYYY-MM-DD for date, YYYY-MM-DD HH:mm for datetime)的字符串
可使用模式进行格式化
更多关于模式的说明,请参考 关于模式
图像用于替代URL或已上传文件的图像参数(参考Image元素说明)
富文本当启用“富文件”选项时,可在文本元素中使用的格式化的字符串,以下是可以使用的标签:
<strong> 粗体
<em> 斜体
<u> 下划线
<s> 删除线
<a> 超链接,使用href属性设置URL
<p> 可设置对齐方式的文件段落,也可通过class指定样式
<span> 用于设置 class和style的标签,如下:
此标签可以包含style属性,用于font-size(字体大小)、color(颜色)、background-color(背景色)。
font-size属性以 px为单位, color属性为有效的 rgb值
此标签可以包含class属性,用于设置字体,class名称必须以 font- 开头加上内置字体名。 字体名称是大小写不敏感的,比如可以使用courier或者Courier设置Courier字体。默认使用的字体是 Helvetica。
有效字体为:
Courier
Helvetica
Times
DejaVuSerif
LibraSans
Montserrat
Roboto
tangerine
Fireflysung (繁体中文)
NotoSansTC (繁体中文)
NotoSansJP (日文)
NotoSansKhmer (高棉语)
Sarabun (泰语)
<p>标签可以使用class属性控制文本的对齐方式,例如align-center, align-right, align-justify。未设置时,默认使用 align-left. <p>标签必须以 </p>结束。不支持使用嵌套的<p>标签。在富文本参数中使用<p>标签时,富文本字段必须仅包含富文本参数,并且不能设置其他样式。
有效的富文本示例:
<span style=”color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);”> <strong>Black</strong> & <u>White</u> </span> <span class=”font-Roboto” style=”font-size: 16px”>Roboto font</span>
带段落的富文本示例:
<p class=”align-center”>
<em>centered text</em></p><p>another paragraph with left aligned text</p>
列表参数列表, 只以用于表格(Table)和片段(Section)的数据源
简单列表某个指定类型(文本、数值、布尔或字符串)的列表参数。在使用表格(Table)创建动态列时,可以用于动态管理横向和纵向的长度, 参考链接:动态表格列
集合用于文本、数字、日期、汇总、平均的逻辑分组参数。
更多用法,请参数: 使用框架(Frame)
汇总对于数值类型的参数列表时行汇总计算
平均对于数值类型的参数列表计算平均值

表达式语法

表达式必须是有效的Python语句,并可以包含参数。 表达式中的参数,要符合各自的数据类型(比如文本参数对应为Python中的字符串,数值参数对应为Python中的 decimal.Decimal类型)。以下是ReportBro支持的运算和函数。 更多关于Python语句的详细信息,请参考:https://docs.python.org/3/reference/simple_stmts.html

关于表达式语法的向导链接为: 在参数中使用表达式

操作说明示例
算术运算+, -, /, *, %${NetPrice} + ${Vat} ${Minutes} % 60
比较运算<, >, <=, >=, ==, !=${Price} > ${Budget} ${Tax} != 0
逻辑运算and, or, not${Weight} > 0 and ${Capacity} <= 200 ${CompanyName} or ${Name} not(${Age} >= 18 and ${AcceptTerms})
条件语法value if cond else other_value'ok' if ${Weight} <= ${Capacity} else 'not enough space'

'ok and plenty of space' if ${Weight} < ${Capacity}/2 else ('ok' if ${Weight} <= ${Capacity} else 'not enough space')
函数说明示例
abs(x)返回数值的绝对值abs(${Score})
ceil(x)向上取整,大于或等于x的最小整数ceil(${Score})
decimal(x)将x转换为decimal.Decimal类型
说明:数值参数被保存为decimals类型,因此不能在进行算术运算时使用float类型。 一般在使用decimal函数使用字符串类型,以防止float类型导致的精度问题。 例如将 decimal(‘3.4’)替换为decimal(3.4),可能会得到的结果是 3.39999…
# 错误用法,price可能是个float
${Price} * 2.5
# 正确用法
${Price} * decimal(‘2.5’)
floor(x)向下取整, 小于或等于x的最大整数floor(${Score})
float(x)将x转换为float类型
说明:可能会导致浮点类型精度问题,具体参考python关于浮点类型精度的说明(https://docs.python.org/3/tutorial/floatingpoint.html)
float(${Price}) * 1.2
format_datetime(d, pattern)使用给出的模式参数pattern格式化时间参数d。 模式必须是有效的日期模式语法format_datetime(${Birthday}, ‘d.M.yyyy’)
format_decimal(n, pattern)使用给出的模式参数pattern格式化时间参数d。 模式必须是有效的数值模式语法format_decimal(${TotalAmount}, ‘#,##0.00’)
int(x)将x转换为整形intint(${Price})
len(x)返回列表或字符串类型的长度len(${Name}) len(${InvoiceItems})
rand()返回0-1之间的浮点数值rand() * 100.0
randint(x)返回小于x的整数值‘random value between 1 and 3: ‘ + str(randint(3) + 1)
str(x)将x转换成字符串‘Number of customers: ‘ + str(${CustomerCount})

键盘上的快捷键

快捷键说明
Shift+select elements选择多个元素
ctrl+C(Windows, Linux)
将选中的元素复制到剪切板
ctrl+V(Windows, Linux)
将剪切板的内容放到模板上
ctrl+Z(Windows, Linux)
返回到上一个操作,也可以使用菜单栏上的返回按钮
ctrl+Y(Windows, Linux)
与返回按钮相反,再次进行某个操作。也可以使用菜单栏的重做按钮
esc关于一个弹窗,比如选中的参数、模式或列表的测试数据。弹窗中的内容会保留下来.
退格键删除选中的元素,也可以使用菜单栏上的删除按钮
方向键按像素移动选中的元素,也可以在详情面板中输入具体位置。
ctrl+鼠标拖动按像素移动选中的元素(替代直接拖动时的10像素)

2026-1-4,完成于北京,上东廓

这篇文章有用吗?

点击星号为它评分!

平均评分 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位评论此文章。

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注