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自己下载到项目中使用