itext jsp页面打印

最近项目中需要一个打印功能,需求很简单,只要打印出单据就可以了,画出一个表格,一些信息需要从数据库中提取

找到了免费的itext,可以实现我的简单的功能了

代码:(打印方法)

public String createPDF(HttpServletRequest request, HttpServletResponse response, String billCode,String comm) {
 Rectangle  rectangle = new Rectangle((float) 663.14 , (float) 370.7);
    Document document = new Document(rectangle,40,50,22,10);// 建立一个Document对象
    //Document document=new Document(PageSize.A4,36,36,36,36);
    //document.setPageSize(PageSize.A4);// 设置页面大小
    //String billCode = "20121026181";
   List<ClientreCharge> reList = cRechargeManager.getreChargeByBillCode(billCode);
   SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分");
   String time = df.format(new Date());
    try {
     ByteArrayOutputStream ops = new ByteArrayOutputStream();//输出到客户段的流
     //OutputStream ops=new FileOutputStream("e:/taony125-test.pdf");//保存进磁盘的流
     //两个ops输出流用来切换,是保存进磁盘还是输出到客户端
   
     PdfWriter.getInstance(document,ops);// 建立一个PdfWriter对象
     document.open();
     BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 设置中文字体
   
     Font headFont1 = new Font(bfChinese, 14, Font.BOLD);// 设置字体大小
     Font headFontN = new Font(bfChinese, 13, Font.BOLD);// 设置字体大小
     Font headFont2 = new Font(bfChinese, 12, Font.BOLD);// 设置字体大小
     Font headFont3 = new Font(bfChinese, 10, Font.NORMAL);// 设置字体大小
   
     float[] widths = { 100, 110, 110, 110, 100, 110 };// 设置表格的列以及列宽
     PdfPTable table = new PdfPTable(widths);// 建立一个pdf表格
   
     table.setSpacingBefore(130f);// 设置表格上面空白宽度
     table.setTotalWidth(535);// 设置表格的宽度
     table.setLockedWidth(true);// 设置表格的宽度固定
     // table.getDefaultCell().setBorder(0);//设置表格默认为无边框
     PdfPCell cell = new PdfPCell(new Paragraph("石家庄瑞特维通讯网络有限公司充值业务单",headFont1));// 建立一个单元格
     // cell.setBorder(0);//设置单元格无边框
   
     cell.setBorder(0);
     cell.setFixedHeight(40);//单元格高度
     cell.setColspan(6);// 设置合并单元格的列数
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);// 设置内容水平居中显示
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     table.addCell(cell);
   
     //列标题
     cell = new PdfPCell(new Paragraph("NO:", headFontN));
     cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
     cell.setBorder(0);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(billCode, headFontN));
     cell.setBorder(0);
     cell.setColspan(3);
     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph(time, headFontN));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setColspan(2);
     cell.setBorder(0);
     table.addCell(cell);
   
     cell = new PdfPCell(new Paragraph("业务专员",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph(reList.get(0).getClientSellerName(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("企业号",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getClireClMark(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("客服专员",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getClientsevName(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph("公司名称",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     cell.setFixedHeight(30);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getClientName() ,headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     cell.setFixedHeight(30);
     cell.setColspan(3);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("新开",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     cell.setFixedHeight(30);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("口  是  | 口  否",headFont3));
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     //Graphics grx = null ;
     //grx.s
     //grx.drawRect(0, 0, 2, 2);
   //添加一个矩形
    //cell.addElement((Element) grx);

     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph("联系人",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getContent(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("联系电话",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getMoney(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("充值单价",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getCounts(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
    
     PdfPTable table2 = null;
     //cell.setRowspan(3);
     if (reList.size() < 2){
      table2 = new PdfPTable(1);
      ClientreCharge creCharge = reList.get(0);
       cell = new PdfPCell(new Paragraph("充值属性:" +creCharge.getDictName()+ "   金额: "
                  + creCharge.getClireMoney() + "         ",headFont3));
       cell.setBorder(0);
       //cell.setColspan(6);
       table2.addCell(cell);
     
     }else{
    
      table2 = new PdfPTable(2);
     for (ClientreCharge creCharge : reList){
      cell = new PdfPCell(new Paragraph("充值属性:" +creCharge.getDictName()+ "   金额: "
                 + creCharge.getClireMoney() + "         ",headFont3));
      cell.setBorder(0);
      //cell.setColspan(6);
      table2.addCell(cell);
     }}
     cell = new PdfPCell(table2);
     cell.setFixedHeight(80);
     cell.setColspan(6);
     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph("回款方式",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     cell.setRowspan(2);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("银行对公",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(" 口 中行    口    工行",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     cell.setColspan(2);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("回款时间",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(" ",headFont3));
     cell.setFixedHeight(20);
     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph("银行对私",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("口  工行    口 建行    口  交行    口  农行   口  光大银行   口  张家口银行   口  现金",headFont3));
     cell.setFixedHeight(20);
     cell.setColspan(4);
     table.addCell(cell);
    
     cell = new PdfPCell(new Paragraph("充值确认",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph(reList.get(0).getUsers(),headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("  ",headFont3));
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("业务确认",headFont3));
     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
     cell.setFixedHeight(20);
     table.addCell(cell);
     cell = new PdfPCell(new Paragraph("",headFont3));
     cell.setFixedHeight(20);
     cell.setColspan(2);
     table.addCell(cell);
    
    
     cell = new PdfPCell(new Paragraph("备注:" + comm, headFont3));
     // cell.setBorder(0);
     cell.setFixedHeight(50);
     cell.setColspan(6);
     cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
     table.addCell(cell);

     document.add(table);
     document.close();
   
     //输出到客户端 start,假如是保存进磁盘,则切换上面的流ops,且屏蔽此段代码即可
     response.setContentType("application/pdf");
     response.setContentLength(ops.size());
     ServletOutputStream out = response.getOutputStream();
     ops.writeTo(out);
     out.flush();
     //end
   
    } catch (DocumentException de) {
     System.err.println(de.getMessage());
     return null;
    } catch (IOException ioe) {
     System.err.println(ioe.getMessage());
     return null;
    }
    return null;
 }

效果:

转载于:https://www.cnblogs.com/suhe/archive/2012/11/18/2746733.html

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

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

相关文章

android token机制_你真的了解16.6ms刷新机制吗?

阅读本文前&#xff0c;请您先点击上面的蓝色字体“Android扫地僧”&#xff0c;“关注”后再点击置顶公众号&#xff0c;优质干货&#xff0c;重磅资源第一时间送达。散人丶https://juejin.im/post/5ce686a46fb9a07ec754f470前言之前在整理知识的时候&#xff0c;看到android屏…

dfa2.java 原理_DFA编程练习2

题目: 请设计DFA, 使其接受全部含有奇数个1的串, 假定 ∑ {0, 1}.解:DFA可能出现两个个状态:qeven: 读入了偶数个1的串.qodd: 读入了奇数个1的串, 该状态也是终结状态(accept state).它们的状态转移图如下:编写程序, 运行效果如下:测试用例说明:0000不被上图的DFA接受1111不被…

Asp.net的HTTP请求处理过程

说明&#xff1a; &#xff08;1&#xff09;、客户端浏览器向服务器发出一个Http请求&#xff0c;此请求会被inetinfo.exe进程截获&#xff0c;然后转交给 aspnet_isapi.dll进程&#xff0c;接着它又通过Http Pipeline的管道&#xff0c;传送给aspnet_wp.exe这个进程&#xff…

ubuntu13.10 编译时 关于链接xlib 库阶段出错的问题解决

/usr/bin/ld: fmouse_main.o: undefined reference to symbol XFlush /usr/lib/i386-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status make: *** [freepen_drv] 错误 1 以上为错误提示&#xff0c…

fread读取整个文件_qt如何实现大文件的加载和显示

最近研究了下如何用qt的原生控件来加载和显示大文件&#xff08;>1G&#xff09;&#xff0c;分享下一些摸索经验。下文源码&#xff1a;compilelife/loginsight​github.com文件的内存映射在开始qt部分之前&#xff0c;我们先了解一个概念——文件的内存映射。我们知道一般…

[转]listview中设置背景图片后 拉动变黑

经本人亲测有效...在Android中&#xff0c;ListView是最常用的一个控件&#xff0c;在做UI设计的时候&#xff0c;很多人希望能够改变一下它的背景&#xff0c;使他能够符合整体的UI设计&#xff0c;改变背景背很简单只需要准备一张图片然后指定属性 android:background"d…

编译pjsip2.1.0 vidgui程序时,xlib保错问题

/usr/lib/i386-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line 以上为错误提示&#xff0c;为链接阶段未指定正确的库文件导致&#xff1b; 解决办法&#xff1a; 修改pro文件&#xff0c;增加下面这一行 LIB -lX11 -L/usr/lib/i386-linux-g…

linux内核编译及添加系统调用(hdu)_浅谈关于Linux内核write系统调用操作的原子性

Linux系统的write调用到底是不是原子的。网上能搜出一大堆文章&#xff0c;基本上要么是翻译一些文献&#xff0c;要么就是胡扯&#xff0c;本文中我来结合实例来试着做一个稍微好一点的回答。先摆出结论吧。结论包含两点&#xff0c;即write调用不能保证什么以及write调用能保…

java 判断对象为控制_Java流程控制

Java流程控制1、Scanner对象①java.util.Scanner是Java5的新特性&#xff0c;可以通过Scanner类来获取用户的输入。②基本语法&#xff1a;1 Scanner snew Scanner(System.in);③通过next()和nextLine()方法接受用户输入&#xff0c;通过hasNext()和hasNextLine()方法来判断用户…

lsb_release -a 查询系统版本

LSB是Linux Standard Base的缩写&#xff0c;lsb_release命令用来显示LSB和特定版本的相关信息。如果使用该命令时不带参数&#xff0c;则默认加上-v参数。 -v, --version 显示版本信息 -i, --id 显示发行版的ID -d, --description 显示该发行版的描述信息 -r, --release 显示当…

directx最终用户运行时_运维定位服务故障时,前5分钟都在忙啥?

遇到服务器故障&#xff0c;问题出现的原因很少可以一下就想到。我们基本上都会从以下步骤入手&#xff0c;这些也是绝大多数运维工程师在定位故障时前几分钟的主要排查点&#xff1a;一、尽可能搞清楚问题的前因后果不要一下子就扎到服务器前面&#xff0c;你需要先搞明白对这…

Hadoop源代码分析(二)

下面给出了Hadoop的包的功能分析。 Package Dependences tool 提供一些命令行工具&#xff0c;如DistCp&#xff0c;archive mapreduce Hadoop的Map/Reduce实现 filecache 提供HDFS文件的本地缓存&#xff0c;用于加快Map/Reduce的数据访问速度 fs 文件系统的抽象&…

java同步锁如何使用_java 同步锁(synchronized)的正确使用姿势

关于线程安全&#xff0c;线程锁我们经常会用到&#xff0c;但你的使用姿势正确不&#xff0c;反正我用错了好长一段时间而不自知。所以有了这篇博客总结下线程锁的正确打开姿势废话不说看例子一&#xff0c;对整个方法进行加锁1&#xff0c;对整个方法进行加锁&#xff0c;不同…

IDE--ubuntu下安装 Source insight

2013-06-03 09:05 74人阅读 评论(0) 收藏 举报 习惯了在source insight下编辑阅读源码&#xff0c;在linux下用vi总是用不好 &#xff0c;还是在ubuntu上用回熟悉的source insight。 在ubuntu中&#xff0c;安装windows程序用wine&#xff0c;然后用wine安装windows软件即可。…

python中什么是数据驱动_利用Python如何实现数据驱动的接口自动化测试

前言 大家在接口测试的过程中&#xff0c;很多时候会用到对CSV的读取操作&#xff0c;本文主要说明Python3对CSV的写入和读取。下面话不多说了&#xff0c;来一起看看详细的介绍吧。 1、需求 某API&#xff0c;GET方法&#xff0c;token,mobile,email三个参数 token为必填项 mo…

密码锁 java接口_从synchronized和lock区别入手聊聊java锁机制

写这篇文章之前&#xff0c;我去百度了一下啥叫锁&#xff0c;百度百科上写道&#xff1a;置于可启闭的器物上&#xff0c;以钥匙或暗码开启。确实我们一般理解的锁就是门锁&#xff0c;密码锁&#xff0c;但是在计算机科学中&#xff0c;锁又是啥&#xff0c;说实话&#xff0…

对cookie和子cookie操作的封装

1 /**2 * 封装cookie的操作3 * type {Object}4 */5 var CookieUtil {6 /**7 * 根据cookie的名字获取相应的值8 * param name cookie名字9 * return {*}10 */11 get:function (name) {12 //对name进行URL编码13 var cookieName…

解决Ubuntu下切换到root用户后没有声音问题

Ubuntu在root用户下&#xff0c;为了安全考虑默认是关闭了声音系统的。 如果要开很简单&#xff0c;因为root登录后pulseaudio没有启动。所以要先启动它 将root加到pulse和pulse-access组&#xff1a; sudo usermod -a -G pulse-access root gpasswd -a root pulse gpasswd -…

lua 给userdata设置元表_lua学习之复习汇总篇

第六日笔记1. 基础概念程序块定义在 lua 中任何一个源代码文件或在交互模式中输入的一行代码程序块可以是任意大小的程序块可以是一连串语句或一条命令也可由函数定义构成&#xff0c;一般将函数定义写在文件中&#xff0c;然后用解释器执行这个文件换行在代码中不起任何作用&a…

java代码请求2次_Android基于OkHttpUtils网络请求的二次封装

OkHttpUtils网络请求为什么进行二次封装&#xff1f;1、减少代码量2、后期换网络处理框架方便二次封装的实现原理1、将网络请求提取在一个方法中2、对里面的可变参数,可以通过参数传递过去,也可以提供一个set方法传递过去3、对于请求失败和成功,我们可以使用接口回调,让调用该方…