java导出pdf(使用iText包)

采用 iText-2.1.7.js2.jar 包
网上很多案例,可以多多借鉴,很多方法没有用过导致不知道,欢迎大佬补充。 话不多说

上代码:
创建document对象 及设置自己需要的字体,字体有很多种 需要的话自行百度- -。 创建对象方法多种多样,但这一步是必须的

//1:创建com.lowagie.text.Document的对象 ,设置纸张大小为A4
	Rectangle pageSize = new Rectangle(PageSize.A4.getHeight(), PageSize.A4.getWidth());
 	Document document = new Document(pageSize);
//2: 创建PdfWriter的对象去侦听上面创建的文档,并把这个文档写入到你定义的输出流
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
	PdfWriter.getInstance(document, baos);
	//3: 打开文档
	document.open();
	//4: 添加内容到文档中
	BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
	//字体设置
	Font titleFont = new Font(bfChinese, 16);
	Font tontChinese = new Font(bfChinese, 12);

关键点:创建表格及设置样式(样式需要自行多调整,多尝试,多百度)

	//设置标题
						document.add(new Paragraph("不动产证明附页",titleFont));
						document.add(new Paragraph("\n"));    //添加空行
						Paragraph t = new Paragraph("不动产证明附页列表",titleFont);
						//设置居中
						t.setAlignment(1);
						t.setAlignment(Element.ALIGN_CENTER);
						document.add(t);
						document.add(new Paragraph("\n"));
						document.add(new Paragraph("权利人(申请人):"+sz.getQlr(),new Font(bfChinese, 15)));
						document.add(new Paragraph("\n"));
						
				        //设置每列长度,共三列
				        PdfPTable table = new PdfPTable(3);
				        table.setTotalWidth(new float[]{ 250, 120,  400}); //设置列宽
				        table.setLockedWidth(true); //锁定列宽
				        table.setTotalWidth(770);//固定宽度 
						table.setHorizontalAlignment(Element.ALIGN_CENTER);
						
		                //第一行 每列名称
		                String[] name = {"不动产单元号","证号","坐落"};
		                for(String a: name) {
		                **//一定要用构造方法写 才可以居中,网上都是用set方法设置居中的,但我开发过程中只能通过构造方法才可以,知道的大神请解惑**
		                	PdfPCell column1 = new PdfPCell(new Phrase(a, tontChinese));
		                	column1.setUseAscender(true); //设置可以居中
		                	column1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); //设置水平居中
		                	column1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //设置垂直居中
			                table.addCell(column1);
		                }
		                //每列的数据,此处为 单元格内数据,请替换成自己的数据
		                for(int i=0;i<sz.getHouseGroup().size();i++) {
		                	PdfPCell cell = new PdfPCell(new Phrase(sz.getHouseGroup().get(i).getBdcdyh() , tontChinese));
			                cell.setMinimumHeight(30);
			                cell.setUseAscender(true); //设置可以居中
			                cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); //设置水平居中
			                cell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //设置垂直居中
			                table.addCell(cell);
			                PdfPCell cell2 = new PdfPCell(new Phrase(sz.getHouseGroup().get(i).getQzh() , tontChinese));
			                cell2.setMinimumHeight(30);
			                cell2.setUseAscender(true); //设置可以居中
			                cell2.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); //设置水平居中
			                cell2.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //设置垂直居中
			                table.addCell(cell2);
			                PdfPCell cell3 = new PdfPCell(new Phrase(sz.getHouseGroup().get(i).getZl(), tontChinese));
			                cell3.setMinimumHeight(30);
			                cell3.setUseAscender(true); //设置可以居中
			                cell3.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); //设置水平居中
			                cell3.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); //设置垂直居中
			                table.addCell(cell3);
				        }
		                //表的结尾 不带边框
		                PdfPCell ljts = new PdfPCell();
		                ljts.setColspan(2);
		                ljts.addElement(new Paragraph("累计套数:"+sz.getLjts()+"套", new Font(bfChinese, 12, Font.NORMAL)));
		                ljts.setMinimumHeight(20); //设置单元格高度
		                ljts.setBorderWidth(0f); //去除边框
		                table.addCell(ljts);
		                
		                PdfPCell dyrq = new PdfPCell();
		                dyrq.setColspan(1);
		                dyrq.addElement(new Paragraph("打印日期:"+sz.getDyrq(), new Font(bfChinese, 12, Font.NORMAL)));
		                dyrq.setMinimumHeight(20); //设置单元格高度
		                dyrq.setBorderWidth(0f); //去除边框
		                table.addCell(dyrq);
				        document.add(table);
				        //5: 关闭文档
						document.close();
						//设置为下载文件弹框,和文件名编码
						ServletOutputStream outputStream = response.getOutputStream();
						response.reset(); //清除缓存,否则报错
						response.setHeader("Content-disposition","attachment; filename=\""+new String("不动产证明附页".getBytes(), "ISO8859-1") +".pdf\"");
						//设置文件大小
						response.setContentLength(baos.size());
						//6: 将PDF文件输出到流中去.
						baos.writeTo(outputStream);
						outputStream.flush();
						outputStream.close();

效果图
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值