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;
}

效果:

优质内容筛选与推荐>>
1、vxworks启动
2、C#导出Word [ZT]
3、opengl累积缓存
4、004---继承与派生
5、Unity3D_最简单的开始界面_结束界面


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号