java pdf打印表格 jar包 itextpdf

1.首先把 List<Map<String, Object>> rowsList = new ArrayList<Map<String, Object>>();
list数据拿到

2.public static void getPdfData(List<Map<String, Object>> dataList, HttpServletResponse response, HttpServletRequest request, String wjmc, String nowTime, String type) {
try {
String fileName = wjmc + “.pdf”;
OutputStream outputStream = null;
try {
// 防止中文乱码
// 针对IE或者以IE为内核的浏览器:
String userAgent = request.getHeader(“User-Agent”);
if (userAgent.contains(“MSIE”) || userAgent.contains(“Trident”)) {
fileName = java.net.URLEncoder.encode(fileName, “UTF-8”);
} else {
// 非IE浏览器的处理:
fileName = new String(fileName.getBytes(“UTF-8”), “ISO-8859-1”);
}
response.reset();
response.setHeader(“Content-Disposition”, “attachment; filename=”" + fileName + “”");
response.setContentType(“application/octet-stream;charset=UTF-8”);
outputStream = new BufferedOutputStream(response.getOutputStream());
// 生成pdf
XxcxPdfDownLoad.createPdf(dataList, outputStream, nowTime, wjmc, type,request);
outputStream.flush();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (outputStream != null) {
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();

	}
}

public static void createPdf(List<Map<String, Object>> list, OutputStream outputStream, String nowTime, String wjmc, String type,HttpServletRequest request) throws DocumentException, IOException {

	// 创建文件
	Document document = new Document();
	Rectangle one = new Rectangle(1050, 1500);
	document.setPageSize(one);
	PdfWriter.getInstance(document, outputStream);
	// 打开文件
	document.open();
	// 中文字体,解决中文不能显示问题 
	String realpath = request.getRealPath("/WEB-INF/classes/font/simsun.ttf");
	BaseFont bfChinese = BaseFont.createFont(realpath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
	// BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

	Font textFont = new Font(bfChinese, 11, Font.NORMAL); // 正常
	Font boldFont = new Font(bfChinese, 13, Font.NORMAL);
	Font tableFont = new Font(bfChinese, 12, Font.NORMAL);
	Font blackFont = new Font(bfChinese, 15, Font.BOLD);// 标题字体
	blackFont.setColor(BaseColor.BLACK);
	// 规格名称
	Paragraph p = new Paragraph(wjmc, blackFont);
	p.setAlignment(Element.ALIGN_CENTER);
	document.add(p);
	PdfPTable head = new PdfPTable(1);
	head.setTotalWidth(new float[] { 520 }); // 设置列宽
	head.setLockedWidth(true); // 锁定列宽
	head.setSpacingBefore(10f); // 前间距
	head.setSpacingAfter(10f); // 后间距
	PdfPCell cell1 = new PdfPCell(new Phrase(nowTime, textFont));
	cell1.setBorderWidth(0);
	cell1.setMinimumHeight(20); // 设置单元格高度
	cell1.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置水平居中
	cell1.setVerticalAlignment(Element.ALIGN_MIDDLE); // 设置垂直居中
	head.addCell(cell1);
	document.add(head);
	String[] columnNames = null;
	// 列名
	if ("type1".equals(type) || "type2".equals(type)  ) {
		columnNames = new String[] { "序号", "代码", "号码", "金额", "税额", "数量", "111", "名称", "购货方", "劳务, "状态" };
	}
	// 10列的表.
	PdfPTable table = new PdfPTable(columnNames.length);
	table.setWidthPercentage(100); // 宽度100%填充
	table.setSpacingBefore(10f); // 前间距
	table.setSpacingAfter(10f); // 后间距
	// 行1
	PdfPCell cells[] = new PdfPCell[columnNames.length];
	// 设置列名
	for (int i = 0; i < columnNames.length; i++) {
		cells[i] = new PdfPCell(new Paragraph(columnNames[i], boldFont));// 单元格内容
		cells[i].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
		cells[i].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
		table.addCell(cells[i]);
	}
	if (null != list && list.size() > 0) {
		if ("type1".equals(type) || "type2".equals(type) ) {
			for (int i = 0; i < list.size(); i++) {
				Map<String, Object> map = (Map<String, Object>) list.get(i);
				PdfPCell cells1[] = new PdfPCell[columnNames.length];// 数组长度对应自己数据长度
				cells1[0] = new PdfPCell(new Paragraph(map.get("RW").toString() , tableFont));
				cells1[0].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[0].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[0]);
				cells1[1] = new PdfPCell(new Paragraph( map.get("FPDM").toString(), tableFont));// 单元格内容
				cells1[1].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[1].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[1]);
				cells1[2] = new PdfPCell(new Paragraph( map.get("FPHM").toString(), tableFont));// 单元格内容
				cells1[2].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[2].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[2]);
				cells1[3] = new PdfPCell(new Paragraph(map.get("JE").toString(), tableFont));
				cells1[3].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[3].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[3]);
				cells1[4] = new PdfPCell(new Paragraph(map.get("SE").toString(), tableFont));
				cells1[4].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[4].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[4]);
				cells1[5] = new PdfPCell(new Paragraph(map.get("SL").toString(), tableFont));
				cells1[5].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[5].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[5]);
				cells1[6] = new PdfPCell(new Paragraph( map.get("KPR").toString(), tableFont));
				cells1[6].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[6].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[6]);
				cells1[7] = new PdfPCell(new Paragraph(map.get("GFMC").toString(), tableFont));
				cells1[7].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[7].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[7]);
				cells1[8] = new PdfPCell(new Paragraph( map.get("GFSBH").toString(), tableFont));
				cells1[8].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[8].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[8]);
				cells1[9] = new PdfPCell(new Paragraph(map.get("HWMC").toString(), tableFont));
				cells1[9].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[9].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[9]);
				cells1[10] = new PdfPCell(new Paragraph(map.get("FPZT").toString(), tableFont));
				cells1[10].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[10].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[10]);
			}
		} else if("type3".equals(type)){
			for (int i = 0; i < list.size(); i++) {
				Map<String, Object> map = (Map<String, Object>) list.get(i);
				PdfPCell cells1[] = new PdfPCell[columnNames.length];// 数组长度对应自己数据长度
				cells1[0] = new PdfPCell(new Paragraph(map.get("RW").toString(), tableFont));
				cells1[0].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[0].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[0]);
				cells1[1] = new PdfPCell(new Paragraph( map.get("FPDM").toString(), tableFont));// 单元格内容
				cells1[1].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[1].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[1]);
				cells1[2] = new PdfPCell(new Paragraph(map.get("FPHM").toString(), tableFont));// 单元格内容
				cells1[2].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[2].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[2]);
				cells1[3] = new PdfPCell(new Paragraph( map.get("JE").toString(), tableFont));
				cells1[3].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[3].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[3]);
				cells1[4] = new PdfPCell(new Paragraph(map.get("SE").toString(), tableFont));
				cells1[4].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[4].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[4]);
				cells1[5] = new PdfPCell(new Paragraph(map.get("KPR").toString(), tableFont));
				cells1[5].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[5].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[5]);
				cells1[6] = new PdfPCell(new Paragraph(map.get("GFMC").toString(), tableFont));
				cells1[6].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[6].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[6]);
				cells1[7] = new PdfPCell(new Paragraph(map.get("GFSH").toString(), tableFont));
				cells1[7].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[7].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[7]);
				cells1[8] = new PdfPCell(new Paragraph(map.get("FPZT").toString(), tableFont));
				cells1[8].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[8].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[8]);
			}
		}else if ("type4".equals(type) || "type5".equals(type) || "type6".equals(type) || "type7".equals(type) || "type8".equals(type) || "type9".equals(type) || "type10".equals(type)
				|| "type11".equals(type) || "type12".equals(type)) {
			for (int i = 0; i < list.size(); i++) {
				Map<String, Object> map = (Map<String, Object>) list.get(i);
				PdfPCell cells1[] = new PdfPCell[columnNames.length];// 数组长度对应自己数据长度
				cells1[0] = new PdfPCell(new Paragraph( map.get("RW").toString(), tableFont));
				cells1[0].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[0].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[0]);
				cells1[1] = new PdfPCell(new Paragraph( map.get("KPRQ").toString(), tableFont));// 单元格内容
				cells1[1].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[1].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[1]);
				cells1[2] = new PdfPCell(new Paragraph( map.get("FPZL_DM").toString(), tableFont));// 单元格内容
				cells1[2].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[2].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[2]);
				cells1[3] = new PdfPCell(new Paragraph(map.get("FP_DM").toString(), tableFont));
				cells1[3].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[3].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[3]);
				cells1[4] = new PdfPCell(new Paragraph( map.get("FP_HM").toString(), tableFont));
				cells1[4].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[4].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[4]);
				cells1[5] = new PdfPCell(new Paragraph( map.get("KPR").toString(), tableFont));
				cells1[5].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[5].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[5]);
				cells1[6] = new PdfPCell(new Paragraph(map.get("KPJE").toString(), tableFont));
				cells1[6].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[6].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[6]);
				cells1[7] = new PdfPCell(new Paragraph(map.get("HYFL_MC").toString(), tableFont));
				cells1[7].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[7].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[7]);
			}

		} else if ("type13".equals(type) || "type14".equals(type)) {
			for (int i = 0; i < list.size(); i++) {
				Map<String, Object> map = (Map<String, Object>) list.get(i);
				PdfPCell cells1[] = new PdfPCell[columnNames.length];// 数组长度对应自己数据长度
				cells1[0] = new PdfPCell(new Paragraph(map.get("RW").toString(), tableFont));
				cells1[0].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[0].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[0]);
				cells1[1] = new PdfPCell(new Paragraph(map.get("KPRQ").toString(), tableFont));// 单元格内容
				cells1[1].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[1].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[1]);
				cells1[2] = new PdfPCell(new Paragraph(map.get("FPDM").toString(), tableFont));// 单元格内容
				cells1[2].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[2].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[2]);
				cells1[3] = new PdfPCell(new Paragraph(map.get("FPHM").toString(), tableFont));
				cells1[3].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[3].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[3]);
				cells1[4] = new PdfPCell(new Paragraph(map.get("KPR").toString(), tableFont));
				cells1[4].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[4].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[4]);
				cells1[5] = new PdfPCell(new Paragraph(map.get("GFSBH").toString(), tableFont));
				cells1[5].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[5].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[5]);
				cells1[6] = new PdfPCell(new Paragraph(map.get("GF_MC").toString(), tableFont));
				cells1[6].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[6].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[6]);
				cells1[7] = new PdfPCell(new Paragraph(map.get("FPZT").toString(), tableFont));
				cells1[7].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[7].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[7]);
			}
		} else if ("type15".equals(type) || "type16".equals(type)) {
			for (int i = 0; i < list.size(); i++) {
				Map<String, Object> map = (Map<String, Object>) list.get(i);
				PdfPCell cells1[] = new PdfPCell[columnNames.length];// 数组长度对应自己数据长度
				cells1[0] = new PdfPCell(new Paragraph(map.get("RW").toString(), tableFont));
				cells1[0].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[0].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[0]);
				cells1[1] = new PdfPCell(new Paragraph(map.get("NSRSBH").toString(), tableFont));// 单元格内容
				cells1[1].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[1].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[1]);
				cells1[2] = new PdfPCell(new Paragraph(map.get("NSRMC").toString(), tableFont));// 单元格内容
				cells1[2].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[2].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[2]);
				cells1[3] = new PdfPCell(new Paragraph(map.get("DFFPZGKPXE").toString(), tableFont));
				cells1[3].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[3].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[3]);
				cells1[4] = new PdfPCell(new Paragraph(map.get("MYZGGPSL").toString(), tableFont));
				cells1[4].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[4].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[4]);
				cells1[5] = new PdfPCell(new Paragraph(map.get("MCZGGPSL").toString(), tableFont));
				cells1[5].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[5].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[5]);
				cells1[6] = new PdfPCell(new Paragraph(map.get("CPZGSL").toString(), tableFont));
				cells1[6].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[6].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[6]);
				cells1[7] = new PdfPCell(new Paragraph(map.get("LRRQ").toString(), tableFont));
				cells1[7].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[7].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[7]);
				cells1[8] = new PdfPCell(new Paragraph(map.get("FDDBRXM").toString(), tableFont));
				cells1[8].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[8].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[8]);
				cells1[9] = new PdfPCell(new Paragraph(map.get("SCJYDZ").toString(), tableFont));
				cells1[9].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[9].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[9]);
				cells1[10] = new PdfPCell(new Paragraph(map.get("DJXH").toString(), tableFont));
				cells1[10].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
				cells1[10].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
				table.addCell(cells1[10]);
			}
		}
	}
	// 把表格添加到文件中
	document.add(table);
	// 关闭文档
	document.close();
}

这个是我自己数据 根据自己需要修改

4.1BaseFont bfChinese = BaseFont.createFont("/WEB-INF/classes/font/simsun.ttf", BaseFont.IDENTITY_H, 4.2BaseFont.NOT_EMBEDDED);
// BaseFont bfChinese = BaseFont.createFont(“STSong-Light”,“UniGB-UCS2-H”, BaseFont.NOT_EMBEDDED);
这两种字体根据自己需要选择 4.2 我没法用 换了jar包也不行 只能用4.1自己下载到项目中使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值