当前位置: 首页 > news >正文

网站域名备案主机名免费咨询协议

网站域名备案主机名,免费咨询协议,如何制作个人公众号,在线代理访问网页以前打印相信很多人因为A4打印两个报告头大过#xff0c;M要把一堆报告既有A4的也有A5的还有微生物的#xff0c;可能输出Page还不那么严谨。要么换页不对叠加了、要么多空白页、中间夹杂A4报告就更加头大。也有的人为了打印页码的共几页而头大。 借助新设计的优势#xff…以前打印相信很多人因为A4打印两个报告头大过M要把一堆报告既有A4的也有A5的还有微生物的可能输出Page还不那么严谨。要么换页不对叠加了、要么多空白页、中间夹杂A4报告就更加头大。也有的人为了打印页码的共几页而头大。 借助新设计的优势一举解决痛点问题 多输出PAGE导致空白页的协议优化 A4打印两个的协议约定 文本背景的协议约定 PDF的协议约定 页码的约定 约定封装 /*** 控制打印用A4打印两个的模式,业务只需要确保第一个或第二个元素是该元素即可达到A4打印两个的效果* param A4Last 如果打印包含A4纸的话是把A4往后移还是不打乱顺序的合并A4前后的A5打印* return*/public static PrintElement A4Double(boolean A4Last) {PrintElement ret new PrintElement();ret.PrintType A4DOUBLE;if(A4Lasttrue){ret.PrintFlagLast;}return ret;}/*** 输出页码元素** param x x坐标(*必填)* param y y坐标(*必填)* param format 格式串给空为:第{curnum}页,共{allnum}页 其他自己控制占位符* param font 字体* param fontSize 字体大小* param fontStyle 字体样式* param alignment 字体靠齐方向 Center居中 Right靠右 Justified或者空靠左* param color 颜色html颜色 red #ffffff这种* param colorBK 背景颜色html颜色 red #ffffff这种正常不给* param angle 旋转角度角度数字* return*/public static PrintElement DrawPageNum(int x, int y, String format, String font, Integer fontSize, String fontStyle, PrintAlignment alignment, String color, String colorBK, String angle) {PrintElement ret new PrintElement();ret.PrintX String.valueOf(x);ret.PrintY String.valueOf(y);//默认值if (format null || format.isEmpty()) {format 第{curnum}页,共{allnum}页;}ret.PrintText format;ret.PrintFont font;if (fontSize null) {fontSize 9;}ret.PrintFontSize String.valueOf(fontSize);ret.PrintFontStyle fontStyle;if (color null) {color ;}ret.PrintColor color;if (colorBK ! null !colorBK.isEmpty()) {ret.PrintColor ret.PrintColor ^ colorBK;}if (alignment ! null) {ret.PrintAlignment alignment.toString();}ret.Angle String.valueOf(angle);ret.PrintType PAGENUM;return ret;}/*** 画标签** param x x坐标(*必填)* param y y坐标(*必填)* param drawStr 要绘制的文本(*必填)* param font 字体* param fontSize 字体大小* param fontStyle 字体样式* param alignment 字体靠齐方向 Center居中 Right靠右 Justified或者空靠左* param color 颜色html颜色 red #ffffff这种* param colorBK 背景颜色html颜色 red #ffffff这种正常不给* param angle 旋转角度角度数字* return*/public static PrintElement DrawLabel(int x, int y, String drawStr, String font, Integer fontSize, String fontStyle, PrintAlignment alignment, String color, String colorBK, String angle) {PrintElement ret new PrintElement();ret.PrintX String.valueOf(x);ret.PrintY String.valueOf(y);ret.PrintText drawStr;ret.PrintFont font;if (fontSize null) {fontSize 9;}ret.PrintFontSize String.valueOf(fontSize);ret.PrintFontStyle fontStyle;if (color null) {color ;}ret.PrintColor color;if (colorBK ! null !colorBK.isEmpty()) {ret.PrintColor ret.PrintColor ^ colorBK;}if (alignment ! null) {ret.PrintAlignment alignment.toString();}ret.Angle String.valueOf(angle);ret.PrintType Label;return ret;}/*** PDF文件的ftp或http全路径。用英文逗号分隔两个A5PDF路径打印会自动合并为一个A4。一个A5路径后跟个英文逗号会把PDF转A4纸打印.单独调用打印。** param httpOrFtpPath pdf文件的下载路径* return*/public static PrintElement DrawFile(String httpOrFtpPath) {PrintElement ret new PrintElement();ret.DataField httpOrFtpPath;ret.PrintType FILE;return ret;}/*** PDF文件的ftp或http全路径。用英文逗号分隔两个A5PDF路径打印会自动合并为一个A4。一个A5路径后跟个英文逗号会把PDF转A4纸打印会把PDF每页提取成大图当一页打印** param httpOrFtpPath pdf文件的下载路径* return*/public static PrintElement DrawPDF(String httpOrFtpPath) {PrintElement ret new PrintElement();ret.DataField httpOrFtpPath;ret.PrintType PDF;return ret;} 实现A4Double和忽略空PAGE /*** 构造函数在这里就把切页处理好避免老模式分页逻辑太复杂简化后续操作** param elementList* return 返回页数打印页的时候下标从0开始*/public int JRTPrintDrawInit(ListDrawElement elementList) {if (elementList ! null elementList.size() 0) {ListDrawElement onePage new ArrayList();for (DrawElement ele : elementList) {//控制打印机的元素不用管if (ele.PrintType.contains(PRINTER)) {continue;}//控制打印PDF的元素不用管if (ele.PrintType.contains(FILE)) {AllPDFFile.add(ele);continue;}//A4打印两个的模式if (ele.PrintType.contains(A4DOUBLE)) {//A4打印两个A5模式isA4Doubletrue;if(ele.PrintFlag.equals(Last)){//A4移到最后isA4ToLasttrue;}continue;}//按照页切割if (ele.PrintType.equals(PAGE) || ele.PrintType.equals(PDF)) {//剔除空白页让业务可以不那么容易出空白页if (onePage.size() 0) {allPageData.add(onePage);//存每页纸张的判断if(pageMaxPrintY587) {pagePaper.add(A4);}else{pagePaper.add(A5);}pageMaxPrintY0;}onePage new ArrayList();}//打印PDF文件的元素元素if (ele.PrintType.equals(PDF)) {JRTPrintDraw.FileService fileService new JRTPrintDraw.FileService();InputStream stream null;try {//从文件服务里面下载文件if (ele.PrintImageFile 1) {stream fileService.DownloadStream(ele.DataField, true);} else {stream fileService.DownloadStream(ele.DataField, false);}if (stream ! null) {ListBufferedImage images JRTPrintDraw.PDFUtil.GetPDFImage(stream);stream.close();if (images ! null images.size() 0) {for (BufferedImage img : images) {DrawElement graph new DrawElement();graph.PrintX String.valueOf(0);graph.PrintY String.valueOf(0);graph.DataField ImgToBase64(img);graph.PrintWidth String.valueOf(img.getWidth() / 5);graph.PrintHeight String.valueOf(img.getHeight() / 5);graph.PrintType Graph;graph.PrintFlag D;onePage.add(graph);//剔除空白页让业务可以不那么容易出空白页if (onePage.size() 0) {allPageData.add(onePage);//存每页纸张的判断if(img.getHeight() / 5587) {pagePaper.add(A4);}else{pagePaper.add(A5);}pageMaxPrintY0;}onePage new ArrayList();}}}} catch (Exception ex) {StringWriter stringWriter new StringWriter();ex.printStackTrace(new PrintWriter(stringWriter));WriteLog(stringWriter.toString());}continue;}//得到最大的Y坐标DealMaxY(ele);//不是分页元素才加if (!ele.PrintType.equals(PAGE)) {onePage.add(ele);}}if (onePage.size() 0) {allPageData.add(onePage);//存每页纸张的判断if(pageMaxPrintY587) {pagePaper.add(A4);}else{pagePaper.add(A5);}pageMaxPrintY0;}}//A4打印两个的处理逻辑if(isA4Doubletrue){DealA4Double();}//设置打印的页面for(ListDrawElement onePage:allPageData) {printPageData.add(onePage);}return allPageData.size();}/*** 处理A4打印两个*/private void DealA4Double(){//存处理的A4打印两个页ListListDrawElement allA4DoublePape new ArrayList();//临时放A4后移的页ListListDrawElement a4LastPageTmp new ArrayList();int index-1;//当前添加A5到一页的数量int addA5Num0;//合并一页用的临时数组ListDrawElement mergePageTmpnew ArrayList();for(ListDrawElement onePage:allPageData){index;String paperpagePaper.get(index);//A4页处理if(paper.equals(A4)){//中间的A4后移if(isA4ToLasttrue){a4LastPageTmp.add(onePage);}else{//如果有合并的页就终止if(mergePageTmp.size()0) {//合并满一页开始新的一页allA4DoublePape.add(mergePageTmp);mergePageTmp new ArrayList();addA5Num 0;}allA4DoublePape.add(onePage);}}//A5页处理else{addA5Num;//上半页if(addA5Num1){MergePage(mergePageTmp,onePage,false);}//下半页else if(addA5Num2){MergePage(mergePageTmp,onePage,true);//如果有合并的页就终止if(mergePageTmp.size()0) {//合并满一页开始新的一页allA4DoublePape.add(mergePageTmp);mergePageTmp new ArrayList();addA5Num 0;}}}}//如果有合并的页就终止if(mergePageTmp.size()0) {//合并满一页开始新的一页allA4DoublePape.add(mergePageTmp);mergePageTmp null;addA5Num 0;}//后移的A4合并进主数据if(a4LastPageTmp.size()0){for(ListDrawElement onePage:a4LastPageTmp){allA4DoublePape.add(onePage);}}//替换主数据allPageDataallA4DoublePape;allA4DoublePapenull;a4LastPageTmpnull;}/*** 合并页数据* param mergeTmp 合并的临时数据* param addPage 要并入的页* param addY 是否添加y是就是A4下面*/private void MergePage(ListDrawElement mergeTmp,ListDrawElement addPage,boolean addY){//不添加Y的话就原封不动的转移if(addYfalse){if(addPage!nulladdPage.size()0){for(DrawElement ele:addPage){mergeTmp.add(ele);}}}//A4下半页偏移Y坐标else{if(addPage!nulladdPage.size()0){for(DrawElement ele:addPage){ele.PrintYString.valueOf(DrawConvert.ToInt32(ele.PrintY)583);//线的终点的Y坐标if(ele.PrintType.equals(ILineN)){ele.PrintHeightString.valueOf(DrawConvert.ToInt32(ele.PrintHeight)583);}//多边形的Y坐标if(ele.PrintType.equals(Poly)){String [] arrele.PrintText.split(\\^);String polyStr ;for(String s:arr){String [] arr1s.split();if (polyStr.isEmpty()) {polyStr arr1[0] String.valueOf(DrawConvert.ToInt32(arr[1])583);} else {polyStr ^ arr1[0] String.valueOf(DrawConvert.ToInt32(arr[1])583);}}ele.PrintTextpolyStr;}mergeTmp.add(ele);}}}}打印示例代码 import JRT.Core.Dto.OutParam; import JRT.Core.Dto.OutValue; import JRT.Core.Dto.PrintElement; import JRT.Core.Util.PrintDrawProtocol; import JRTBLLBase.BaseHttpHandlerNoSession; import JRTBLLBase.Helper;import java.awt.*; import java.util.ArrayList; import java.util.List;/*** 输出符合打印元素绘制协议的打印元素数据来供打印执行层打印*/ public class PrintBarCodeTest extends BaseHttpHandlerNoSession {/*** 按传入的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{ListPrintElement retListnew ArrayList();//标志A4打印两个retList.add(PrintDrawProtocol.A4Double(true));//打印PDF文件//retList.add(PrintDrawProtocol.DrawFile(http://localhost:8080/JRTWeb/FileService/test.pdf));retList.add(PrintDrawProtocol.DrawPDF(http://localhost:8080/JRTWeb/FileService/test.pdf));//换页retList.add(PrintDrawProtocol.ChangePage());//换页retList.add(PrintDrawProtocol.ChangePage());//换页retList.add(PrintDrawProtocol.ChangePage());//页码retList.add(PrintDrawProtocol.DrawPageNum(720,10,,宋体,12,, null,,#fda632,0));//画logoretList.add(PrintDrawProtocol.DrawLabel(420,10,http的logn图,宋体,22,, null,,#fda632,0));retList.add(PrintDrawProtocol.DrawGraph(420,30,64,64,http://localhost:8080/JRTWeb/FileService/logo.png,false,null));retList.add(PrintDrawProtocol.DrawLabel(420,150,ftp的logn图,宋体,12,, null,,#fda632,0));//retList.add(PrintDrawProtocol.DrawGraph(420,180,64,64,ftp://zlz:zlz127.0.0.1:21/ftp.png,false,null));//画一个文本retList.add(PrintDrawProtocol.DrawLabel(20,20,zhanglianzhu,宋体,12,, null,,#ff5252,0));//画一个条码retList.add(PrintDrawProtocol.DrawBarCode(20,50,0947809,true,5,30,,宋体,12,,null,,0));//换一根横线retList.add(PrintDrawProtocol.DrawLine(20,70,70,70,1,,));//换一根竖线retList.add(PrintDrawProtocol.DrawLine(50,10,50,470,1,,));//绘制一个条码retList.add(PrintDrawProtocol.DrawQRCode(20,90,jbase,90,90));//绘制一个条码retList.add(PrintDrawProtocol.DrawLabel(20,210,jbase打印支持,宋体,12,,null,,,0));//绘制一个条码retList.add(PrintDrawProtocol.DrawLabel(20,230,20231118 22:49,宋体,12,,null,,,0));//画一个点retList.add(PrintDrawProtocol.DrawPoint(20,270,10,10,o,));retList.add(PrintDrawProtocol.DrawPoint(100,270,10,10,[],));retList.add(PrintDrawProtocol.DrawPoint(200,270,10,10,,));//画多边形ListPoint pointListnew ArrayList();Point p1new Point();p1.x10;p1.y300;pointList.add(p1);Point p2new Point();p2.x100;p2.y310;pointList.add(p2);Point p3new Point();p3.x50;p3.y360;pointList.add(p3);retList.add(PrintDrawProtocol.DrawPoly(pointList,));//画复选框retList.add(PrintDrawProtocol.DrawCheckBox(10,400,true,30,30));//画单选框retList.add(PrintDrawProtocol.DrawRadio(60,400,true,30,30));//画复选框retList.add(PrintDrawProtocol.DrawCheckBox(110,400,false,30,30));//画单选框retList.add(PrintDrawProtocol.DrawRadio(160,400,false,30,30));//绘制一个条码retList.add(PrintDrawProtocol.DrawLabel(20,1010,页尾,宋体,12,,null,,,0));retList.add(PrintDrawProtocol.DrawLabel(20,900,A4纸张打印,宋体,12,, null,,,0));//换一根横线retList.add(PrintDrawProtocol.DrawLine(20,1025,700,1025,1,,));//换页retList.add(PrintDrawProtocol.ChangePage());//页码retList.add(PrintDrawProtocol.DrawPageNum(520,10,,宋体,12,, null,,#fda632,0));//画logoretList.add(PrintDrawProtocol.DrawLabel(420,10,logn图,宋体,12,, null,,,0));retList.add(PrintDrawProtocol.DrawGraph(420,20,64,64,http://localhost:8080/JRTWeb/FileService/logo.png,false,null));//画一个文本retList.add(PrintDrawProtocol.DrawLabel(10,10,这是打印的第二页,宋体,12,, null,,,0));//画一个条码retList.add(PrintDrawProtocol.DrawBarCode(10,50,0947809,true,5,30,,宋体,12,,null,,0));//换一根横线retList.add(PrintDrawProtocol.DrawLine(10,70,70,70,1,,));//换一根竖线retList.add(PrintDrawProtocol.DrawLine(50,10,50,470,1,,));//绘制一个条码retList.add(PrintDrawProtocol.DrawQRCode(10,90,jbase,90,90));//绘制一个条码retList.add(PrintDrawProtocol.DrawLabel(10,210,jbase打印支持,宋体,12,,null,,,0));//绘制一个条码retList.add(PrintDrawProtocol.DrawLabel(10,230,20231119,宋体,12,,null,,,0));retList.add(PrintDrawProtocol.DrawLabel(20,500,A5纸张打印,宋体,12,, null,,,0));//画一根横线retList.add(PrintDrawProtocol.DrawLine(20,525,700,525,1,,));//换页retList.add(PrintDrawProtocol.ChangePage());//页码retList.add(PrintDrawProtocol.DrawPageNum(520,10,,宋体,12,, null,,#fda632,0));//画logoretList.add(PrintDrawProtocol.DrawLabel(420,10,logn图,宋体,12,, null,,,0));retList.add(PrintDrawProtocol.DrawGraph(420,20,64,64,http://localhost:8080/JRTWeb/FileService/logo.png,false,null));//画一个文本retList.add(PrintDrawProtocol.DrawLabel(10,10,这是打印的第三页,宋体,12,, null,,,0));//画一个条码retList.add(PrintDrawProtocol.DrawBarCode(10,50,0947809,true,5,30,,宋体,12,,null,,0));//换一根横线retList.add(PrintDrawProtocol.DrawLine(10,70,70,70,1,,));//换一根竖线retList.add(PrintDrawProtocol.DrawLine(50,10,50,470,1,,));//绘制一个条码retList.add(PrintDrawProtocol.DrawQRCode(10,90,jbase,90,90));//绘制一个条码retList.add(PrintDrawProtocol.DrawLabel(10,210,jbase打印支持,宋体,12,,null,,,0));//绘制一个条码retList.add(PrintDrawProtocol.DrawLabel(10,230,20231119,宋体,12,,null,,,0));retList.add(PrintDrawProtocol.DrawLabel(20,500,A5纸张打印,宋体,12,, null,,,0));//画一根横线retList.add(PrintDrawProtocol.DrawLine(20,525,700,525,1,,));//换页retList.add(PrintDrawProtocol.ChangePage());//页码retList.add(PrintDrawProtocol.DrawPageNum(520,10,,宋体,12,, null,,#fda632,0));//画logoretList.add(PrintDrawProtocol.DrawLabel(420,10,logn图,宋体,12,, null,,,0));retList.add(PrintDrawProtocol.DrawGraph(420,20,64,64,http://localhost:8080/JRTWeb/FileService/logo.png,false,null));//画一个文本retList.add(PrintDrawProtocol.DrawLabel(10,10,这是打印的第四页,宋体,12,, null,,,0));//画一个条码retList.add(PrintDrawProtocol.DrawBarCode(10,50,0947809,true,5,30,,宋体,12,,null,,0));//换一根横线retList.add(PrintDrawProtocol.DrawLine(10,70,70,70,1,,));//换一根竖线retList.add(PrintDrawProtocol.DrawLine(50,10,50,470,1,,));//绘制一个条码retList.add(PrintDrawProtocol.DrawQRCode(10,90,jbase,90,90));//绘制一个条码retList.add(PrintDrawProtocol.DrawLabel(10,210,jbase打印支持,宋体,12,,null,,,0));//绘制一个条码retList.add(PrintDrawProtocol.DrawLabel(10,230,20231206,宋体,12,,null,,,0));retList.add(PrintDrawProtocol.DrawLabel(20,500,A5纸张打印,宋体,12,, null,,,0));//画一根横线retList.add(PrintDrawProtocol.DrawLine(20,525,700,525,1,,));//先包一个打印元素绘制协议数据生成的工具类来解决元素约束问题工具类实现了调用工具类得到标签条码文本等return Helper.Object2Json(retList);} } 让独立的A4后移 不扰乱顺序 这样就能极大的简化业务的打印控制逻辑方便得到高效稳定的打印效果后面有时间将解决绘制表格的痛点问题来给Web提供强大的客户端支持这是一次没有历史代码干扰的全新设计也是对老效果的全面超越 哈哈
http://www.zqtcl.cn/news/555393/

相关文章:

  • 网络公司给我们做的网站_但是我们不知道域名是否属于我们湖北正规网站建设质量保障
  • 本地网站asp iis团队展示网站
  • 企业网站管理系统cmswordpress知识管理系统
  • 创建一个网站需要怎么做销售平台公司
  • 网站域名实名认证吗做斗图的网站
  • 公司在兰州要做网站怎样选择做网站数据库表各字段详情
  • 营销型网站建设的要素搭建本地网站
  • 深圳网站建设V芯ee8888ewordpress瀑布流主 #65533;
  • 股票交易网站开发angular2做的网站有
  • 如何建立免费个人网站angularjs 网站开发
  • 湖南信息网官方网站安徽省房地产开发项目管理系统
  • a5建站无限动力网站
  • 南京网站建设王道下拉??怎么做免费网站推
  • WordPress站群 管理icp备案网站管理员有负责吗
  • 智慧团建官方网站登录做网站网站的虚拟空间
  • 自己做网站成本推广代理平台
  • wamp搭建多个网站网站设计方面有什么公司
  • 九江集团网站建设app广告对接平台
  • 个人网页网站制作模板搜索引擎营销经典案例
  • 北京自助建站系统思茅区建设局网站
  • 国外被动收入网站做的好的成都网站建设 川icp备
  • 网站的微信推广怎么做php在电子商务网站建设中的应用研究 戴书浩
  • 中山做网站有什么做logo网站
  • 建设网站要什么手续义乌简游网络科技有限公司
  • 深圳做企业网站的音乐网站设计
  • 互联网网站如何做菜鸟教程自学网
  • 网站模板上传工具网站报名照片怎么做
  • 做网站如何备案东城做企业网站多少钱
  • 建设手机网站的目的广告制作行业发展前景
  • 手工艺品网站建设目的长春有哪些网络设计公司