620 lines
26 KiB
Java
620 lines
26 KiB
Java
package com.zhgd.xmgl.pdf;
|
||
|
||
import com.google.gson.JsonObject;
|
||
import com.itextpdf.text.*;
|
||
import com.itextpdf.text.pdf.BaseFont;
|
||
import com.itextpdf.text.pdf.PdfPCell;
|
||
import com.itextpdf.text.pdf.PdfPTable;
|
||
import com.itextpdf.text.pdf.draw.DottedLineSeparator;
|
||
import com.itextpdf.text.pdf.draw.LineSeparator;
|
||
import com.zhgd.jeecg.common.mybatis.EntityMap;
|
||
import lombok.extern.slf4j.Slf4j;
|
||
import org.apache.commons.collections.MapUtils;
|
||
|
||
import java.math.BigDecimal;
|
||
import java.text.DecimalFormat;
|
||
import java.text.SimpleDateFormat;
|
||
import java.util.Date;
|
||
import java.util.List;
|
||
|
||
/**
|
||
* @program: wisdomSite
|
||
* @description:
|
||
* @author: Mr.Peng
|
||
* @create: 2022-06-01 11:28
|
||
**/
|
||
|
||
@Slf4j
|
||
public class PdfUtils {
|
||
// 定义全局的字体静态变量
|
||
private static Font titlefont;
|
||
private static Font headfont;
|
||
private static Font keyfont;
|
||
private static Font textfont;
|
||
// 静态代码块
|
||
static {
|
||
try {
|
||
// 不同字体(这里定义为同一种字体:包含不同字号、不同style)
|
||
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
|
||
titlefont = new Font(bfChinese, 16, Font.BOLD);
|
||
headfont = new Font(bfChinese, 14, Font.BOLD);
|
||
keyfont = new Font(bfChinese, 10, Font.BOLD);
|
||
textfont = new Font(bfChinese, 10, Font.NORMAL);
|
||
|
||
} catch (Exception e) {
|
||
log.error("error:", e);
|
||
}
|
||
}
|
||
|
||
|
||
// 生成PDF文件
|
||
public static void generatePDF1(Document document, List<EntityMap> list, String monthTitle,String projectName) throws Exception {
|
||
// 优化打印后的签名宽高
|
||
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
|
||
textfont = new Font(bfChinese, 13, Font.NORMAL);
|
||
// 优化打印
|
||
//textfont = new Font(bfChinese, 15, Font.NORMAL);
|
||
// 段落
|
||
Paragraph paragraph = new Paragraph("工人考勤表", titlefont);
|
||
paragraph.setAlignment(1); // 设置文字居中 0靠左 1,居中 2,靠右
|
||
paragraph.setIndentationLeft(12); // 设置左缩进
|
||
paragraph.setIndentationRight(12); // 设置右缩进
|
||
paragraph.setFirstLineIndent(24); // 设置首行缩进
|
||
paragraph.setLeading(20f); // 行间距
|
||
paragraph.setSpacingBefore(5f); // 设置段落上空白
|
||
paragraph.setSpacingAfter(10f); // 设置段落下空白
|
||
// 直线
|
||
Paragraph p1 = new Paragraph();
|
||
p1.add(new Chunk(new LineSeparator()));
|
||
// 点线
|
||
Paragraph p2 = new Paragraph();
|
||
p2.add(new Chunk(new DottedLineSeparator()));
|
||
// 超链接
|
||
// Anchor anchor = new Anchor("日期");
|
||
//// anchor.setReference("2020");
|
||
// // 定位
|
||
// Anchor gotoP = new Anchor("项目名称");
|
||
// gotoP.setReference("#top");
|
||
// 添加图片
|
||
// Image image =
|
||
// Image.getInstance("https://img-blog.csdn.net/20180801174617455?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzg0ODcxMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70");
|
||
// image.setAlignment(Image.ALIGN_CENTER);
|
||
// image.scalePercent(40); //依照比例缩放
|
||
// 表格
|
||
// PdfPTable table = createTable(new float[] { 40, 120, 120, 120, 80, 80
|
||
// });
|
||
PdfPTable table = createTable2(38);
|
||
table.setWidthPercentage(100); // 宽度100%填充
|
||
// float[] columnWidths = { 0.8f, 1.8f, 2.5f, 2.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,
|
||
// 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,
|
||
// 0.5f, 0.5f, 0.5f, 0.5f, 1.2f, 1.5f, 2.5f };
|
||
// 优化打印后的签名宽高
|
||
float[] columnWidths = { 0.8f, 1.8f, 2.5f, 2.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,
|
||
0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,
|
||
0.5f, 0.5f, 0.5f, 0.5f, 1.2f, 3.0f, 2.5f };
|
||
table.setWidths(columnWidths);
|
||
|
||
table.addCell(createCell("时间: " + monthTitle, headfont, Element.ALIGN_LEFT, 38, false));
|
||
table.addCell(createCell("项目名称: " + projectName, headfont, Element.ALIGN_LEFT, 38, false));
|
||
table.addCell(createCell("序号", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("姓名", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("部门/班组", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("人员类型", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("1", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("2", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("3", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("4", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("5", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("6", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("7", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("8", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("9", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("10", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("11", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("12", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("13", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("14", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("15", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("16", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("17", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("18", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("19", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("20", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("21", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("22", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("23", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("24", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("25", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("26", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("27", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("28", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("29", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("30", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("31", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("出勤天数合计", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("本人签名确认", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("备注", keyfont, Element.ALIGN_CENTER));
|
||
int index=0;
|
||
for (EntityMap data:list) {
|
||
table.addCell(myCreateCell(String.valueOf(index + 1), textfont));
|
||
index++;
|
||
// 出勤合计
|
||
int cqMaxx = 0;
|
||
table.addCell(myCreateCell(MapUtils.getString(data,"workerName"), textfont));
|
||
table.addCell(myCreateCell(MapUtils.getString(data,"departmentTeamName"), textfont));
|
||
table.addCell(myCreateCell(MapUtils.getString(data,"personTypeName"), textfont));
|
||
String cq1 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day1"))) {
|
||
cq1 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq1 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq1, textfont));
|
||
String cq2 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day2"))) {
|
||
cq2 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq2 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq2, textfont));
|
||
String cq3 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day3"))) {
|
||
cq3 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq3 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq3, textfont));
|
||
String cq4 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day4"))) {
|
||
cq4 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq4 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq4, textfont));
|
||
String cq5 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day5"))) {
|
||
cq5 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq5 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq5, textfont));
|
||
String cq6 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day6"))) {
|
||
cq6 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq6 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq6, textfont));
|
||
String cq7 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day7"))) {
|
||
cq7 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq7 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq7, textfont));
|
||
String cq8 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day8"))) {
|
||
cq8 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq8 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq8, textfont));
|
||
String cq9 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day9"))) {
|
||
cq9 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq9 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq9, textfont));
|
||
String cq10 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day10"))) {
|
||
cq10 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq10 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq10, textfont));
|
||
String cq11 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day11"))) {
|
||
cq11 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq11 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq11, textfont));
|
||
String cq12 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day12"))) {
|
||
cq12 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq12 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq12, textfont));
|
||
String cq13 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day13"))) {
|
||
cq13 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq13 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq13, textfont));
|
||
String cq14 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day14"))) {
|
||
cq14 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq14 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq14, textfont));
|
||
String cq15 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day15"))) {
|
||
cq15 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq15 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq15, textfont));
|
||
String cq16 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day16"))) {
|
||
cq16 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq16 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq16, textfont));
|
||
String cq17 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day17"))) {
|
||
cq17 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq17 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq17, textfont));
|
||
String cq18 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day18"))) {
|
||
cq18 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq18 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq18, textfont));
|
||
String cq19 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day19"))) {
|
||
cq19 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq19 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq19, textfont));
|
||
String cq20 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day20"))) {
|
||
cq20 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq20 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq20, textfont));
|
||
String cq21 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day21"))) {
|
||
cq21 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq21 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq21, textfont));
|
||
String cq22 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day22"))) {
|
||
cq22 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq22 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq22, textfont));
|
||
String cq23 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day23"))) {
|
||
cq23 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq23 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq23, textfont));
|
||
String cq24 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day24"))) {
|
||
cq24 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq24 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq24, textfont));
|
||
String cq25 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day25"))) {
|
||
cq25 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq25 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq25, textfont));
|
||
String cq26 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day26"))) {
|
||
cq26 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq26 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq26, textfont));
|
||
String cq27 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day27"))) {
|
||
cq27 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq27 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq27, textfont));
|
||
String cq28 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day28"))) {
|
||
cq28 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq28 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq28, textfont));
|
||
String cq29 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day29"))) {
|
||
cq29 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq29 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq29, textfont));
|
||
String cq30 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day30"))) {
|
||
cq30 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq30 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq30, textfont));
|
||
String cq31 = "";
|
||
if (!"0".equals(MapUtils.getString(data,"day31"))) {
|
||
cq31 = "√";
|
||
cqMaxx = cqMaxx + 1;
|
||
} else {
|
||
cq31 = " ";
|
||
}
|
||
table.addCell(myCreateCell(cq31, textfont));
|
||
table.addCell(myCreateCell(String.valueOf(cqMaxx), textfont));
|
||
table.addCell(myCreateCell(" ", textfont));
|
||
table.addCell(myCreateCell(" ", textfont));
|
||
}
|
||
document.add(paragraph);
|
||
// document.add(anchor);
|
||
document.add(p2);
|
||
// document.add(gotoP);
|
||
document.add(p1);
|
||
document.add(table);
|
||
// document.add(image);
|
||
}
|
||
|
||
|
||
|
||
// 生成PDF文件
|
||
public static void generatePDF2(Document document, java.util.List<EntityMap> list, String projectName, String monthTitle)
|
||
throws Exception {
|
||
double payNetmaYf = 0.0;
|
||
double payNetmaSf = 0.0;
|
||
if (list.size() > 0) {
|
||
for(EntityMap data:list){
|
||
payNetmaSf = payNetmaSf + MapUtils.getDouble(data,"payNet",0d);
|
||
payNetmaYf = payNetmaYf + MapUtils.getDouble(data,"payGross",0d);
|
||
}
|
||
}
|
||
//换算
|
||
DecimalFormat df = new DecimalFormat("0.00");
|
||
String str = df.format(payNetmaYf);
|
||
BigDecimal bigDecimalk = new BigDecimal(str);
|
||
String strssk = bigDecimalk.toPlainString();
|
||
//log.info("2:" + strssk);
|
||
|
||
DecimalFormat df2 = new DecimalFormat("0.00");
|
||
String str2 = df2.format(payNetmaSf);
|
||
BigDecimal bigDecimalk2 = new BigDecimal(str2);
|
||
String strssk2 = bigDecimalk2.toPlainString();
|
||
//log.info("2:" + strssk2);
|
||
// 段落
|
||
Paragraph paragraph = new Paragraph(projectName + "工资表" + monthTitle, titlefont);
|
||
paragraph.setAlignment(1); // 设置文字居中 0靠左 1,居中 2,靠右
|
||
paragraph.setIndentationLeft(12); // 设置左缩进
|
||
paragraph.setIndentationRight(12); // 设置右缩进
|
||
paragraph.setFirstLineIndent(24); // 设置首行缩进
|
||
paragraph.setLeading(20f); // 行间距
|
||
paragraph.setSpacingBefore(5f); // 设置段落上空白
|
||
paragraph.setSpacingAfter(10f); // 设置段落下空白
|
||
Paragraph paragraph2 = new Paragraph("施工单位:(盖章)", textfont);
|
||
paragraph2.setAlignment(0); // 设置文字居中 0靠左 1,居中 2,靠右
|
||
paragraph2.setIndentationLeft(12); // 设置左缩进
|
||
paragraph2.setIndentationRight(12); // 设置右缩进
|
||
paragraph2.setFirstLineIndent(24); // 设置首行缩进
|
||
paragraph2.setLeading(0); // 行间距
|
||
paragraph2.setSpacingBefore(45f); // 设置段落上空白
|
||
paragraph2.setSpacingAfter(0); // 设置段落下空白
|
||
Paragraph paragraph3 = new Paragraph("应发工资总金额:¥" + strssk, textfont);
|
||
paragraph3.setAlignment(2); // 设置文字居中 0靠左 1,居中 2,靠右
|
||
paragraph3.setIndentationLeft(12); // 设置左缩进
|
||
paragraph3.setIndentationRight(12); // 设置右缩进
|
||
paragraph3.setFirstLineIndent(24); // 设置首行缩进
|
||
paragraph3.setLeading(0); // 行间距
|
||
paragraph3.setSpacingBefore(0); // 设置段落上空白
|
||
paragraph3.setSpacingAfter(0); // 设置段落下空白
|
||
Paragraph paragraph4 = new Paragraph("建设单位(盖章):", textfont);
|
||
paragraph4.setAlignment(0); // 设置文字居中 0靠左 1,居中 2,靠右
|
||
paragraph4.setIndentationLeft(12); // 设置左缩进
|
||
paragraph4.setIndentationRight(12); // 设置右缩进
|
||
paragraph4.setFirstLineIndent(24); // 设置首行缩进
|
||
paragraph4.setLeading(0); // 行间距
|
||
paragraph4.setSpacingBefore(75f); // 设置段落上空白
|
||
paragraph4.setSpacingAfter(0); // 设置段落下空白
|
||
Paragraph paragraph5 = new Paragraph("实发工资总金额:¥" + strssk2, textfont);
|
||
paragraph5.setAlignment(2); // 设置文字居中 0靠左 1,居中 2,靠右
|
||
paragraph5.setIndentationLeft(12); // 设置左缩进
|
||
paragraph5.setIndentationRight(12); // 设置右缩进
|
||
paragraph5.setFirstLineIndent(24); // 设置首行缩进
|
||
paragraph5.setLeading(0); // 行间距
|
||
paragraph5.setSpacingBefore(0); // 设置段落上空白
|
||
paragraph5.setSpacingAfter(0); // 设置段落下空白
|
||
Paragraph paragraph6 = new Paragraph("", textfont);
|
||
paragraph6.setAlignment(0); // 设置文字居中 0靠左 1,居中 2,靠右
|
||
paragraph6.setIndentationLeft(12); // 设置左缩进
|
||
paragraph6.setIndentationRight(12); // 设置右缩进
|
||
paragraph6.setFirstLineIndent(24); // 设置首行缩进
|
||
paragraph6.setLeading(0); // 行间距
|
||
paragraph6.setSpacingBefore(75f); // 设置段落上空白
|
||
paragraph6.setSpacingAfter(15f); // 设置段落下空白
|
||
|
||
PdfPTable table = createTable3(7);
|
||
table.setWidthPercentage(100); // 宽度100%填充
|
||
float[] columnWidths = { 1.2f, 2.5f, 3.5f, 2.5f, 2.5f, 2.5f, 2.5f };
|
||
table.setWidths(columnWidths);
|
||
// table.addCell(createCell("施工单位:(盖章)", headfont, Element.ALIGN_LEFT,
|
||
// 7, false));
|
||
// table.addCell(createCell2("应发工资总金额:", headfont, Element.ALIGN_LEFT,
|
||
// 7, false));
|
||
// table.addCell(createCell("建设单位(盖章):", headfont, Element.ALIGN_LEFT,
|
||
// 7, false));
|
||
// table.addCell(createCell("实发工资总金额:", headfont, Element.ALIGN_LEFT, 7,
|
||
// false));
|
||
table.addCell(createCell("序号", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("姓名", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("身份证号", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("银行卡号", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("部门/班组", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("实发工资", keyfont, Element.ALIGN_CENTER));
|
||
table.addCell(createCell("领款签字人", keyfont, Element.ALIGN_CENTER));
|
||
//序号
|
||
Integer totalQuantity = 0;
|
||
if (list.size() > 0) {
|
||
for (EntityMap data : list) {
|
||
Double payNet=MapUtils.getDoubleValue(data,"payNet");
|
||
if(payNet!=null) {
|
||
//序号
|
||
table.addCell(myCreateCell(String.valueOf(totalQuantity + 1), textfont));
|
||
//姓名
|
||
table.addCell(myCreateCell(MapUtils.getString(data, "workerName", ""), textfont));
|
||
//身份证号
|
||
table.addCell(myCreateCell(MapUtils.getString(data, "idCard", ""), textfont));
|
||
//银行卡号
|
||
table.addCell(myCreateCell(MapUtils.getString(data, "payRollBankNumber", ""), textfont));
|
||
//
|
||
table.addCell(myCreateCell(MapUtils.getString(data, "departmentTeamName", ""), textfont));
|
||
//Double payNet = MapUtils.getDoubleValue(data, "payNet", 0d);
|
||
DecimalFormat df3 = new DecimalFormat("0.00");
|
||
String str3 = df3.format(payNet);
|
||
BigDecimal bigDecimalk3 = new BigDecimal(str3);
|
||
String strssk3 = bigDecimalk3.toPlainString();
|
||
// 实发工资payNet
|
||
table.addCell(myCreateCell(String.valueOf(strssk3), textfont));
|
||
// 领款待签字
|
||
table.addCell(myCreateCell(" ", textfont));
|
||
totalQuantity++;
|
||
}
|
||
}
|
||
}
|
||
document.add(paragraph);
|
||
document.add(paragraph2);
|
||
document.add(paragraph3);
|
||
document.add(paragraph4);
|
||
document.add(paragraph5);
|
||
document.add(paragraph6);
|
||
document.add(table);
|
||
}
|
||
|
||
/** --------------------------创建表格的方法end------------------- --------- */
|
||
// 生成表格
|
||
public static PdfPTable createTable2(int colNumber) {
|
||
PdfPTable table = new PdfPTable(colNumber);
|
||
try {
|
||
table.setLockedWidth(true);
|
||
//table.setTotalWidth(780);
|
||
table.setTotalWidth(1100);
|
||
table.setHorizontalAlignment(Element.ALIGN_CENTER);
|
||
table.getDefaultCell().setBorder(1);
|
||
} catch (Exception e) {
|
||
log.error("error:", e);
|
||
}
|
||
return table;
|
||
}
|
||
|
||
public static PdfPCell createCell(String value, Font font, int align) {
|
||
PdfPCell cell = new PdfPCell();
|
||
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
|
||
cell.setHorizontalAlignment(align);
|
||
cell.setPhrase(new Phrase(value, font));
|
||
return cell;
|
||
}
|
||
/**
|
||
* 创建单元格(指定字体、水平居..、单元格跨x列合并、设置单元格内边距)
|
||
*
|
||
* @param value
|
||
* @param font
|
||
* @param align
|
||
* @param colspan
|
||
* @param boderFlag
|
||
* @return
|
||
*/
|
||
public static PdfPCell createCell(String value, Font font, int align, int colspan, boolean boderFlag) {
|
||
PdfPCell cell = new PdfPCell();
|
||
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
|
||
cell.setHorizontalAlignment(align);
|
||
cell.setColspan(colspan);
|
||
cell.setPhrase(new Phrase(value, font));
|
||
cell.setPadding(3.0f);// 标题下内容居左位置(时间项目)
|
||
if (!boderFlag) {
|
||
cell.setBorder(0);// 标题下内容边框,不改变这个数据(时间项目)
|
||
cell.setPaddingTop(15.0f);// 标题下内容向上位置
|
||
cell.setPaddingBottom(8.0f);// 标题下内容两个位置
|
||
} else if (boderFlag) {
|
||
cell.setBorder(0);
|
||
cell.setPaddingTop(0.0f);
|
||
cell.setPaddingBottom(15.0f);
|
||
}
|
||
return cell;
|
||
}
|
||
/**
|
||
* 创建单元格(指定字体)
|
||
* 固定高度40
|
||
* @param value
|
||
* @param font
|
||
* @return
|
||
*/
|
||
public static PdfPCell myCreateCell(String value, Font font) {
|
||
PdfPCell cell = new PdfPCell();
|
||
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
|
||
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
|
||
cell.setPhrase(new Phrase(value, font));
|
||
cell.setFixedHeight(40);
|
||
return cell;
|
||
}
|
||
|
||
// 生成表格
|
||
public static PdfPTable createTable3(int colNumber) {
|
||
PdfPTable table = new PdfPTable(colNumber);
|
||
try {
|
||
table.setLockedWidth(true);
|
||
table.setTotalWidth(520);
|
||
table.setHorizontalAlignment(Element.ALIGN_CENTER);
|
||
table.getDefaultCell().setBorder(1);
|
||
} catch (Exception e) {
|
||
log.error("error:", e);
|
||
}
|
||
return table;
|
||
}
|
||
}
|