JRT表格元素完全体

2024-01-06 14:12
文章标签 元素 表格 完全 jrt

本文主要是介绍JRT表格元素完全体,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前分享的表格绘制是一个表格是实现雏形,周边把表格完全体实现,后面很多打印和绘制逻辑将借助此表格实现,所以需要表格够稳定够强大。

表格定义,后面借助模板设计器定义,现在是写死的测试定义对象。
1.PageList定义每页的起点坐标和换页行数或者换页坐标,以及是否画标题。弄这么个数组就是考虑有业务换页后画表格位置要不同,并且换页行数有变化,正常的话一页给一个页信息,如果没给对应序号页面的页信息,将按最后的PageList元素控制。
2.HeadCol定义标题的列信息,可以给标题单独知道加粗等。
3.DataCol定义数据列的信息,设置打印哪些列,每列的宽度和字体等。
4.Cols定义列数量,用于多列打印。
5.Padding和Font定义间距和字体。
6.RowHeight定义行高。

{"PageList": [{"Left": 10,"Top": 40,"ChangePageRowNum": 14,"ChangePageY": 1000,"DrawHead": true}, {"Left": 30,"Top": 100,"ChangePageRowNum": 0,"ChangePageY": 600,"DrawHead": true}],"Cols": 1,"RowHeight": 20,"PaddingTop": 4,"PaddingLeft": 4,"PaddingRight": 4,"PaddingBottom": 4,"BoderWidth": 1,"PrintFont": "宋体","PrintFontSize": "12","PrintFontStyle": "","HeadCol": [{"DataField": "Col0","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": "Bold","PrintColor": ""}, {"DataField": "Col1","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": "Bold","PrintColor": ""}, {"DataField": "Col2","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": "Bold","PrintColor": ""}, {"DataField": "Col3","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": "Bold","PrintColor": ""}, {"DataField": "Col4","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": "Bold","PrintColor": ""}],"DataCol": [{"DataField": "Col0","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": null,"PrintColor": ""}, {"DataField": "Col1","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": null,"PrintColor": ""}, {"DataField": "Col2","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": null,"PrintColor": ""}, {"DataField": "Col3","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": null,"PrintColor": ""}, {"DataField": "Col4","Text": "","Width": 150,"PrintAlignment": "","PrintFont": null,"PrintFontSize": null,"PrintFontStyle": null,"PrintColor": ""}]
}

表格绘制API定义,传入定义和标题级表格数据,这里加了表格换页回调接口和表格唯一键,换页前后会执行回调,如果不为null的话。
在这里插入图片描述

表格换页接口
在这里插入图片描述
画表格示例

import JRT.Core.DataGrid.*;
import JRT.Core.Dto.OutValue;
import JRT.Core.Dto.PrintElement;
import JRT.Core.Metrics.DrawMetricsHandler;
import JRT.Core.Util.PrintDrawProtocol;
import JRTBLLBase.BaseHttpHandlerNoSession;
import JRTBLLBase.Helper;import java.awt.*;
import java.util.*;
import java.util.List;/*** 画表格测试,将要实现一个自动切割和实现换页的表格个业务使用*/
public class DrawGrid extends BaseHttpHandlerNoSession implements IGridChangePage {/*** 打印元素*/private List<PrintElement> retList = new ArrayList<>();/*** 表格换页之前要执行的逻辑* @param gridKey* @param maxY*/public void PreChangePageDo(String gridKey,int maxY){retList.add(PrintDrawProtocol.DrawLabel(20, 10, "这是表格换页之前执行逻辑画的", "宋体", 12, "", null, "", "#fda632", "0"));}/*** 表格换页之后要执行的逻辑* @param gridKey* @param maxY*/public void AfterChangePageDo(String gridKey,int maxY){retList.add(PrintDrawProtocol.DrawLabel(400, 10, "这是表格换页之后执行逻辑画的", "宋体", 12, "", null, "", "#fda632", "0"));}/*** 按传入的RowID输出符合打印元素绘制协议的数据来实现打印控制** @param RowID   业务主键* @param P1* @param P2* @param P3* @param P4* @param P5* @param P6* @param P7* @param P8* @param P9* @param P10* @param P11* @param P12* @param P13* @param Session* @param Output* @return*/public String GetData(String RowID, String P1, String P2, String P3, String P4, String P5, String P6, String P7, String P8, String P9, String P10, String P11, String P12, String P13, OutValue Session, OutValue Output) throws Exception {//这部分由设计器维护的Json得到表格维护信息GridDto def = new GridDto();def.BoderWidth=1;GridPageDto page = new GridPageDto();page.ChangePageRowNum=14;page.Top=40;def.PageList.add(page);//第2和后面的页画到500后换页page = new GridPageDto();page.Top=100;page.Left=30;page.ChangePageY=600;def.PageList.add(page);GridColDto col = null;//表格列for (int i = 0; i < 5; i++) {col = new GridColDto();col.DataField = "Col" + i;col.Width = 150;def.DataCol.add(col);col = new GridColDto();col.DataField = "Col" + i;col.Width = 150;col.PrintFontStyle="Bold";def.HeadCol.add(col);}GridDataDto headData = new GridDataDto();headData.Col0="第一列";headData.Col1="第二列";headData.Col2="第三列";headData.Col3="第四列";headData.Col4="第五列";//这部分由业务打印组装数据List<Object> dataList = new ArrayList<>();for (int i = 0; i < 41; i++) {GridDataDto one = new GridDataDto();one.Col0 = "第" + i + "行0列,这是比较长的内容额,会自动换行";//合并单元格if(i%4==0){one.Col0=PrintDrawProtocol.GetMergeGridStr(one.Col0,2,2);}one.Col1 = "第" + i + "行1列,这是稍微长的内容";one.Col2 = "第" + i + "行2列,this is jrtbase draw grid test for printtemplate";one.Col3 = "第" + i + "行3列";one.Col4 = "1.这是第一行$r$n2.这是第二行$r$n3.这是第三行";dataList.add(one);}//控制纸张方向retList.add(PrintDrawProtocol.ControlPrinter("A4", PrintDrawProtocol.PrintLayout.Portrait,"pdf","",0,0));//绘制表格int lastY = DrawGrid(retList,def, headData, dataList,"G1",this);return Helper.Object2Json(retList);}/*** 数据实体*/public static class GridDataDto {public String Col0;public String Col1;public String Col2;public String Col3;public String Col4;}
}

效果
第一页,控制14行换页
在这里插入图片描述

后面几页页,控制从30,100开始画,最大画到600换页
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

适合哪些业务场景自己构思吧,哈哈

这篇关于JRT表格元素完全体的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/576599

相关文章

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

如何利用Python实现给Excel表格截图

《如何利用Python实现给Excel表格截图》这篇文章主要为大家详细介绍了如何利用Python实现给Excel表格截图功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 我搜索了网络上的方案,感觉把 Excel 表格转换为 html 再用 platwright 截图是比China编程较顺

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

HDU 2159 二维完全背包

FATE 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,xhd就不会玩这游戏。xhd还说了他最多只杀s只怪。请问他能

zoj 1721 判断2条线段(完全)相交

给出起点,终点,与一些障碍线段。 求起点到终点的最短路。 枚举2点的距离,然后最短路。 2点可达条件:没有线段与这2点所构成的线段(完全)相交。 const double eps = 1e-8 ;double add(double x , double y){if(fabs(x+y) < eps*(fabs(x) + fabs(y))) return 0 ;return x + y ;

Prompt - 将图片的表格转换成Markdown

Prompt - 将图片的表格转换成Markdown 0. 引言1. 提示词2. 原始版本 0. 引言 最近尝试将图片中的表格转换成Markdown格式,需要不断条件和优化提示词。记录一下调整好的提示词,以后在继续优化迭代。 1. 提示词 英文版本: You are an AI assistant tasked with extracting the content of

遮罩,在指定元素上进行遮罩

废话不多说,直接上代码: ps:依赖 jquer.js 1.首先,定义一个 Overlay.js  代码如下: /*遮罩 Overlay js 对象*/function Overlay(options){//{targetId:'',viewHtml:'',viewWidth:'',viewHeight:''}try{this.state=false;//遮罩状态 true 激活,f