导入依赖
<!-- pdf-->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>font-asian</artifactId>
<version>7.1.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
package gsa.rule.model.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;import org.springframework.beans.factory.annotation.Value;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfArray;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfDictionary;
import com.itextpdf.text.pdf.PdfName;
import com.itextpdf.text.pdf.PdfObject;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;import gsa.base.common.Utils.Utils;
public class PdfUtil {
@Value("${nginx.localfilepath}")
private String filepath;
@Value("${nginx.localfileurl}")
private String fileurl;
/**
* 抠模板
* @throws Exception
*/
public static void createAllPdf() throws Exception {
//填充创建pdf
PdfReader reader = null;
PdfStamper stamp = null;
try {
reader = new PdfReader("D:/惠州监管平台/2020年7月 惠州市建设项目用地报批评估报告.pdf");
SimpleDateFormat simp = new SimpleDateFormat("yyyy-MM-dd");
String times = simp.format(new Date()).trim();
//创建生成报告名称
// String root = ServletActionContext.getRequest().getRealPath("/upload") + File.separator;
// if (!new File(root).exists())
// new File(root).mkdirs();
// File deskFile = new File(root, times + ".pdf");
File path = new File("D:/HZJGPT/" + times + ".pdf");
BaseFont bf = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); // set font
Font font = new Font(bf,10);
// FileManagerUtil.uploadFiles(file, filepath);
stamp = new PdfStamper(reader, new FileOutputStream(path));
//取出报表模板中的所有字段
AcroFields form = stamp.getAcroFields();
for (int i=1; i<=reader.getNumberOfPages(); i++){
//获得pdfstamper在当前页的上层打印内容.也就是说 这些内容会覆盖在原先的pdf内容之上.
PdfContentByte over = stamp.getOverContent(i);
//用pdfreader获得当前页字典对象.包含了该页的一些数据.比如该页的坐标轴信息.
PdfDictionary p = reader.getPageN(i);
//拿到mediaBox 里面放着该页pdf的大小信息.
PdfObject po = p.get(new PdfName("MediaBox"));
System.out.println(po.isArray());
//po是一个数组对象.里面包含了该页pdf的坐标轴范围.
PdfArray pa = (PdfArray) po;
System.out.println(pa.size());
//看看y轴的最大值.
System.out.println(pa.getAsNumber(pa.size()-1));
//开始写入文本
over.beginText();
//设置字体和大小
over.setFontAndSize(font.getBaseFont(), 10);
//设置字体的输出位置
over.setTextMatrix(107, 540);
//要输出的text
over.showText("我要加[终稿]字样 " + i);
over.endText();
//创建一个image对象.
/*Image image = Image.getInstance("c:/1.jpg");
//设置image对象的输出位置pa.getAsNumber(pa.size()-1).floatValue() 是该页pdf坐标轴的y轴的最大值
image.setAbsolutePosition(0,pa.getAsNumber(pa.size()-1).floatValue()-100);//0, 0, 841.92, 595.32
over.addImage(image);*/
//画一个圈.
over.setRGBColorStroke(0xFF, 0x00, 0x00);
over.setLineWidth(5f);
over.ellipse(250, 450, 350, 550);
over.stroke();
}
stamp.close();// 填充数据
form.setField("fpzs", "123");
form.setField("ysyzs", "123");
form.setField("syzs", "15");//报告生成日期
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
String generationdate = dateformat.format(new Date());
form.setField("generationdate", generationdate);
stamp.setFormFlattening(true);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stamp != null) {
stamp.close();
}
if (reader != null) {
reader.close();
}
}
}
public static void pdf() throws DocumentException, IOException {
String zb="惠州市2020年度用地计划指标共计fpzs亩,已使用指标ysyzs亩,剩余syzs亩,使用率syl。其中,新增建设用地计划指标fpxzzs亩,已使用ysyxzzs亩,剩余syxzzs亩,使用率xzsyl;复垦周转指标fpfkzs亩,已使用ysyfkzs亩,剩余syfkzs亩,使用率fksyl;增减挂钩指标fpzjzs亩,已使用ysyzjzs亩,剩余syzjzs亩,使用率zjsyl。";
String zb1="惠州市xxxx年xx月,已完成组卷的用地报批面积共计xxx亩。其中,报批的农用地xxx亩,耕地xxx亩,基本农田xxx亩,未利用地xxx亩。正在报批的面积xxx亩,其中:农用地xxx亩,耕地xxx亩,基本农田xxx亩,未利用地xxx亩;已报批面积xxx亩,其中:农用地xxx亩,耕地xxx亩,基本农田xxx亩,未利用地xxx亩。";
String zb2="惠州市xxxx年xx月,已完成组卷的用地报批面积共计xxx亩。其中,单独选址项目用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;批次用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;城市建设用地农用地转用和土地征收实施方案报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;“只转不征”项目用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;报国务院批准的城市建设用地(一年一批次)面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%。各区县报批类型统计情况见下表:";
String zb3="惠州市xxxx年xx月,已完成组卷的用地报批面积共计xxx亩,工业用地xxx亩,工业用地占比xx%。其中,商服用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;住宅用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;工矿仓储用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;其他用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%。各区县开发用途统计情况见下表:";
// Document document =new Document(); // 默认页面大小是A4
// Document document =new Document(PageSize.A4); // 指定页面大小为A4
String times = Utils.getRandomStr(5);
Document document =new Document(PageSize.A4,50,50,100,20); // 指定页面大小为A4,且自定义页边距(marginLeft、marginRight、marginTop、marginBottom)
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D:/HZJGPT/" + times + ".pdf"));
document.open();
BaseFont bfChinese;
bfChinese=BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//jar包
// bfChinese=BaseFont.createFont("C:/Windows/Fonts/msyh.ttf",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); //系统字体,其实5.0版以后的iText加入字体还是很方便的。
Font topfont = new Font(bfChinese,14,Font.NORMAL);
Font textfont =new Font(bfChinese,10,Font.BOLD|Font.UNDERLINE);
Font font = new Font(bfChinese, 12);
Font bigtitielFont = new Font(bfChinese, 18, Font.BOLD);//设置字体
Font titielFont = new Font(bfChinese, 22, Font.BOLD);//设置字体
Font dateFont = new Font(bfChinese, 22, Font.NORMAL);//设置字体
Font FontChinese = new Font(bfChinese, 16, Font.NORMAL);
Paragraph elements = new Paragraph("惠州市建设项目用地报批评估报告", titielFont);
elements.setAlignment(Paragraph.ALIGN_CENTER);
document.add(elements);
Paragraph pdate = new Paragraph("(2020年7月)", dateFont);
pdate.setAlignment(Paragraph.ALIGN_CENTER);
pdate.setSpacingAfter(40f);
document.add(pdate);
Paragraph p1=new Paragraph("一、报批情况汇总",bigtitielFont);//设置字体样式
p1.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
p1.setFirstLineIndent(24);// 首行缩进
p1.setLeading(35f); //行间距
document.add(p1);
Paragraph p2=new Paragraph("(一) 指标分配及使用情况",FontChinese);//设置字体样式
p2.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
p2.setFirstLineIndent(24);// 首行缩进
p2.setLeading(35f); //行间距
document.add(p2);
Paragraph pt=new Paragraph(zb,FontChinese);//设置字体样式
pt.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
// pt.setIndentationLeft(12);// 左缩进
// pt.setIndentationRight(12);// 右缩进
pt.setFirstLineIndent(24);// 首行缩进
pt.setLeading(35f); //行间距
// pt.setSpacingBefore(5f); //设置段落上空白
// pt.setSpacingAfter(10f); //设置段落下空白
// File path = new File("D:/HZJGPT/" + times + ".pdf");
document.add(pt);// 5.关闭文档
document.close();
}
public static void generatePdf() throws DocumentException, IOException {
String zb="惠州市2020年度用地计划指标共计fpzs亩,已使用指标ysyzs亩,剩余syzs亩,使用率syl。其中,新增建设用地计划指标fpxzzs亩,已使用ysyxzzs亩,剩余syxzzs亩,使用率xzsyl;复垦周转指标fpfkzs亩,已使用ysyfkzs亩,剩余syfkzs亩,使用率fksyl;增减挂钩指标fpzjzs亩,已使用ysyzjzs亩,剩余syzjzs亩,使用率zjsyl。";
String zb1="惠州市xxxx年xx月,已完成组卷的用地报批面积共计xxx亩。其中,报批的农用地xxx亩,耕地xxx亩,基本农田xxx亩,未利用地xxx亩。正在报批的面积xxx亩,其中:农用地xxx亩,耕地xxx亩,基本农田xxx亩,未利用地xxx亩;已报批面积xxx亩,其中:农用地xxx亩,耕地xxx亩,基本农田xxx亩,未利用地xxx亩。";
String zb2="惠州市xxxx年xx月,已完成组卷的用地报批面积共计xxx亩。其中,单独选址项目用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;批次用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;城市建设用地农用地转用和土地征收实施方案报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;“只转不征”项目用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;报国务院批准的城市建设用地(一年一批次)面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%。各区县报批类型统计情况见下表:";
String zb3="惠州市xxxx年xx月,已完成组卷的用地报批面积共计xxx亩,工业用地xxx亩,工业用地占比xx%。其中,商服用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;住宅用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;工矿仓储用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%;其他用地报批面积xxx亩,去年同期xxx亩,上月xxx亩,同比增加/减少xx%,环比增加/减少xx%。各区县开发用途统计情况见下表:";
String times = Utils.getRandomStr(5);
Document document =new Document(PageSize.A4,50,50,100,20); // 指定页面大小为A4,且自定义页边距(marginLeft、marginRight、marginTop、marginBottom)
PdfWriter.getInstance(document, new FileOutputStream("D:/HZJGPT/" + times + ".pdf"));
document.open();
BaseFont bfChinese;
bfChinese=BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//jar包
Font topfont = new Font(bfChinese,14,Font.NORMAL);
Font textfont =new Font(bfChinese,10,Font.BOLD|Font.UNDERLINE);
Font font = new Font(bfChinese, 12);
Font bigtitielFont = new Font(bfChinese, 18, Font.BOLD);//设置字体
Font titielFont = new Font(bfChinese, 22, Font.BOLD);//设置字体
Font dateFont = new Font(bfChinese, 22, Font.NORMAL);//设置字体
Font FontChinese = new Font(bfChinese, 16, Font.NORMAL);
Paragraph elements = new Paragraph("惠州市建设项目用地报批评估报告", titielFont);
elements.setAlignment(Paragraph.ALIGN_CENTER);
document.add(elements);
//----------------------------------------------------------------------------
Paragraph pdate = new Paragraph("(2020年7月)", dateFont);
pdate.setAlignment(Paragraph.ALIGN_CENTER);
pdate.setSpacingAfter(40f);
document.add(pdate);
//--------------------------------------------------------------------
Paragraph p1=new Paragraph("一、报批情况汇总",bigtitielFont);//设置字体样式
p1.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
p1.setFirstLineIndent(24);// 首行缩进
p1.setLeading(35f); //行间距
document.add(p1);
//------------------------------------------------------------------------
Paragraph p2=new Paragraph("(一) 指标分配及使用情况",FontChinese);//设置字体样式
p2.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
p2.setFirstLineIndent(24);// 首行缩进
p2.setLeading(35f); //行间距
document.add(p2);
//-------------------------------------------------------------------------
Paragraph pt=new Paragraph(zb,FontChinese);//设置字体样式
pt.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
pt.setFirstLineIndent(24);// 首行缩进
pt.setLeading(35f); //行间距
document.add(pt);
//------------------------------------------------------------------------------
Paragraph p3=new Paragraph("(二) 报批情况实时监控",FontChinese);//设置字体样式
p3.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
p3.setFirstLineIndent(24);// 首行缩进
p3.setLeading(35f); //行间距
document.add(p3);
//------------------------------------------------------------------------
Paragraph pt1=new Paragraph(zb1,FontChinese);//设置字体样式
pt1.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
pt1.setFirstLineIndent(24);// 首行缩进
pt1.setLeading(35f); //行间距
document.add(pt1);
//------------------------------------------------------------------------
//*****************************************************************************
//--------------------------------------------------------------------
Paragraph p4=new Paragraph("二、报批情况专项统计",bigtitielFont);//设置字体样式
p4.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
p4.setFirstLineIndent(24);// 首行缩进
p4.setLeading(35f); //行间距
document.add(p4);
//------------------------------------------------------------------------
Paragraph p5=new Paragraph("(一) 按报批类型统计",FontChinese);//设置字体样式
p5.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
p5.setFirstLineIndent(24);// 首行缩进
p5.setLeading(35f); //行间距
document.add(p5);
//-------------------------------------------------------------------------
Paragraph pt2=new Paragraph(zb2,FontChinese);//设置字体样式
pt2.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
pt2.setFirstLineIndent(24);// 首行缩进
pt2.setLeading(35f); //行间距
document.add(pt2);
//------------------------------------------------------------------------------
Paragraph p6=new Paragraph("(二) 按开发用途统计",FontChinese);//设置字体样式
p6.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
p6.setFirstLineIndent(24);// 首行缩进
p6.setLeading(35f); //行间距
document.add(p6);
//------------------------------------------------------------------------
Paragraph pt3=new Paragraph(zb3,FontChinese);//设置字体样式
pt3.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
pt3.setFirstLineIndent(24);// 首行缩进
pt3.setLeading(35f); //行间距
document.add(pt3);
//------------------------------------------------------------------------// 5.关闭文档
document.close();
}
// double fpzs=zbmap.get("TOTAL");
// double syzs=0.0;
// double fpxzzs=0.0;
// double ysyxzzs=0.0;
// double syxzzs=0.0;
// double xzsyl=0.0;
// double fpfkzs=0.0;
// double ysyfkzs=0.0;
// double syfkzs=0.0;
// double fksyl=0.0;
// double fpzjzs=0.0;
// double ysyzjzs=0.0;
// double syzjzs=0.0;
// double zjsyl=0.0;
public static void generatePdf(String year,String month,List<Map<String, Object>> zblist,List<Map<String, Object>> bplist,List<Map<String, Object>> lxlist,List<Map<String, Object>> lxhblist,List<Map<String, Object>> kflist,List<Map<String, Object>> kfhblist,String filepath) throws DocumentException, IOException {
Map<String, Object> zbmap=zblist.get(0);
Map<String, Object> bpmap=bplist.get(0);
Map<String, Object> lxmap=new HashMap<>();
Map<String, Object> lxhbmap=new HashMap<String, Object>();
Map<String, Object> lxtbmap=new HashMap<String, Object>();
for(Map<String, Object> map:lxlist) {
if("现期".equals(map.get("TYPE"))&&"全市".equals(map.get("XZQHMC"))) {
lxmap=map;
}else if("同比".equals(map.get("TYPE"))&&"全市".equals(map.get("XZQHMC"))){
lxtbmap=map;
}
}
for(Map<String, Object> map:lxhblist) {
if("环比".equals(map.get("TYPE"))&&"全市".equals(map.get("XZQHMC"))) {
lxhbmap=map;
}
}
Map<String, Object> kfmap=new HashMap<>();
Map<String, Object> kfhbmap=new HashMap<String, Object>();
Map<String, Object> kftbmap=new HashMap<String, Object>();
for(Map<String, Object> map:kflist) {
if("现期".equals(map.get("TYPE"))&&"全市".equals(map.get("XZQHMC"))) {
kfmap=map;
}else if("同比".equals(map.get("TYPE"))&&"全市".equals(map.get("XZQHMC"))){
kftbmap=map;
}
}
for(Map<String, Object> map:kfhblist) {
if("环比".equals(map.get("TYPE"))&&"全市".equals(map.get("XZQHMC"))) {
kfhbmap=map;
}
}
String zb="惠州市"+year+"年度用地计划指标共计"+zbmap.get("TOTAL")+"亩,已使用指标"+zbmap.get("YSY_TOTAL")+"亩,剩余"+zbmap.get("SY_TOTAL")+"亩,使用率"+zbmap.get("TOTAL_SYL")+"。其中,新增建设用地计划指标"+zbmap.get("XZJSYD")+"亩,已使用"+zbmap.get("YSY_XZJSYD")+"亩,剩余"+zbmap.get("SY_XZJSYD")+"亩,使用率"+zbmap.get("XZJSYD_SYL")+";复垦周转指标"+zbmap.get("CJFK")+"亩,已使用"+zbmap.get("YSY_CJFK")+"亩,剩余"+zbmap.get("SY_CJFK")+"亩,使用率"+zbmap.get("CJFK_SYL")+";增减挂钩指标"+zbmap.get("ZJGG")+"亩,已使用"+zbmap.get("YSY_ZJGG")+"亩,剩余"+zbmap.get("SY_ZJGG")+"亩,使用率"+zbmap.get("ZJGG_SYL")+"。";
String zb1="惠州市"+year+"年"+month+"月,已完成组卷的用地报批面积共计"+bpmap.get("TOTAL")+"亩。其中,报批的农用地"+bpmap.get("TOTAL_NYDMJ")+"亩,耕地"+bpmap.get("TOTAL_GDMJ")+"亩,基本农田"+bpmap.get("TOTAL_YJJBNT")+"亩,未利用地"+bpmap.get("TOTAL_WLYD")+"亩。正在报批的面积"+bpmap.get("ZZBP_TOTAL")+"亩,其中:农用地"+bpmap.get("ZZBP_NYDMJ")+"亩,耕地"+bpmap.get("ZZBP_GDMJ")+"亩,基本农田"+bpmap.get("ZZBP_YJJBNT")+"亩,未利用地"+bpmap.get("ZZBP_WLYD")+"亩;已报批面积"+bpmap.get("YBP_TOTAL")+"亩,其中:农用地"+bpmap.get("YBP_NYDMJ")+"亩,耕地"+bpmap.get("YBP_GDMJ")+"亩,基本农田"+bpmap.get("YBP_YJJBNT")+"亩,未利用地"+bpmap.get("YBP_WLYD")+"亩。";
String zb2="惠州市"+year+"年"+month+"月,已完成组卷的用地报批面积共计"+lxmap.get("TOTAL_ZMJ")+"亩。其中,单独选址项目用地报批面积"+lxmap.get("DDXZ_ZMJ")+"亩,去年同期"+lxtbmap.get("DDXZ_ZMJ")+"亩,上月"+lxhbmap.get("DDXZ_ZMJ")+"亩,同比"+tbhb(lxmap.get("DDXZ_ZMJ").toString(),lxtbmap.get("DDXZ_ZMJ").toString())+",环比"+tbhb(lxmap.get("DDXZ_ZMJ").toString(),lxhbmap.get("DDXZ_ZMJ").toString())+";批次用地报批面积"+lxmap.get("CSFP_ZMJ")+"亩,去年同期"+lxtbmap.get("CSFP_ZMJ")+"亩,上月"+lxhbmap.get("CSFP_ZMJ")+"亩,同比"+tbhb(lxmap.get("CSFP_ZMJ").toString(),lxtbmap.get("CSFP_ZMJ").toString())+",环比"+tbhb(lxmap.get("CSFP_ZMJ").toString(),lxhbmap.get("CSFP_ZMJ").toString())+";城市建设用地农用地转用和土地征收实施方案报批面积"+lxmap.get("SSFA_ZMJ")+"亩,去年同期"+lxtbmap.get("SSFA_ZMJ")+"亩,上月"+lxhbmap.get("SSFA_ZMJ")+"亩,同比"+tbhb(lxmap.get("SSFA_ZMJ").toString(),lxtbmap.get("SSFA_ZMJ").toString())+",环比"+tbhb(lxhbmap.get("SSFA_ZMJ").toString(),lxhbmap.get("SSFA_ZMJ").toString())+";“只转不征”项目用地报批面积"+lxmap.get("ZZBP_ZMJ")+"亩,去年同期"+lxtbmap.get("ZZBP_ZMJ")+"亩,上月"+lxhbmap.get("ZZBP_ZMJ")+"亩,同比"+tbhb(lxmap.get("ZZBP_ZMJ").toString(),lxhbmap.get("ZZBP_ZMJ").toString())+",环比"+tbhb(lxmap.get("ZZBP_ZMJ").toString(),lxhbmap.get("ZZBP_ZMJ").toString())+";报国务院批准的城市建设用地(一年一批次)面积"+lxmap.get("GWY_ZMJ")+"亩,去年同期"+lxtbmap.get("GWY_ZMJ")+"亩,上月"+lxhbmap.get("GWY_ZMJ")+"亩,同比"+tbhb(lxmap.get("GWY_ZMJ").toString(),lxtbmap.get("GWY_ZMJ").toString())+",环比"+tbhb(lxmap.get("GWY_ZMJ").toString(),lxhbmap.get("GWY_ZMJ").toString())+"。各区县报批类型统计情况见下表:";
String zb3="惠州市"+year+"年"+month+"月,已完成组卷的用地报批面积共计"+kfmap.get("TOTAL")+"亩,工业用地"+kfmap.get("GF_YD")+"亩,工业用地占比xx%。其中,商服用地报批面积"+kfmap.get("SF_YD")+"亩,去年同期"+kftbmap.get("SF_YD")+"亩,上月"+kfhbmap.get("SF_YD")+"亩,同比"+tbhb(kfmap.get("SF_YD").toString(),kftbmap.get("SF_YD").toString())+",环比"+tbhb(kfmap.get("SF_YD").toString(),kfhbmap.get("SF_YD").toString())+";住宅用地报批面积"+kfmap.get("ZZ_YD")+"亩,去年同期"+kftbmap.get("ZZ_YD")+"亩,上月"+kfhbmap.get("ZZ_YD")+"亩,同比"+tbhb(kfmap.get("ZZ_YD").toString(),kftbmap.get("ZZ_YD").toString())+",环比"+tbhb(kfmap.get("ZZ_YD").toString(),kfhbmap.get("ZZ_YD").toString())+";工矿仓储用地报批面积"+kfmap.get("CC_YD")+"亩,去年同期"+kftbmap.get("CC_YD")+"亩,上月"+kfhbmap.get("CC_YD")+"亩,同比"+tbhb(kfmap.get("CC_YD").toString(),kftbmap.get("CC_YD").toString())+",环比"+tbhb(kfmap.get("CC_YD").toString(),kfhbmap.get("CC_YD").toString())+";其他用地报批面积"+kfmap.get("TOTAL_QTYD")+"亩,去年同期"+kftbmap.get("TOTAL_QTYD")+"亩,上月"+kfhbmap.get("TOTAL_QTYD")+"亩,同比"+tbhb(kfmap.get("TOTAL_QTYD").toString(),kftbmap.get("TOTAL_QTYD").toString())+",环比"+tbhb(kfmap.get("ZZ_YD").toString(),kfhbmap.get("TOTAL_QTYD").toString())+"。各区县开发用途统计情况见下表:";
Document document =new Document(PageSize.A4,50,50,100,20); // 指定页面大小为A4,且自定义页边距(marginLeft、marginRight、marginTop、marginBottom)
PdfWriter.getInstance(document, new FileOutputStream(filepath));
document.open();
BaseFont bfChinese;
bfChinese=BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//jar包
Font titielFont = new Font(bfChinese, 22, Font.BOLD);//设置字体
Font dateFont = new Font(bfChinese, 22, Font.NORMAL);//设置字体
Paragraph elements = new Paragraph("惠州市建设项目用地报批评估报告", titielFont);
elements.setAlignment(Paragraph.ALIGN_CENTER);
document.add(elements);
//----------------------------------------------------------------------------
BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
Font size14font = new Font(baseFont,14,Font.NORMAL); //大小为14的正常字体
Font size10font = new Font(baseFont,10); //大小为10的粗体
Paragraph pdate = new Paragraph("(2020年7月)", dateFont);
pdate.setAlignment(Paragraph.ALIGN_CENTER);
pdate.setSpacingAfter(40f);
document.add(pdate);
document.add(getP("一、报批情况汇总"));
document.add(getPtwo("(一) 指标分配及使用情况"));
document.add(getPtwo(zb));
document.add(getPthree("表 1 指标分配及使用情况监控"));
PdfPTable pdfPTable=getInitTable(size10font,zblist);
document.add(pdfPTable);
document.add(getPtwo("(二) 报批情况实时监控"));
document.add(getPtwo(zb1));
document.add(getPthree("表 2 用地报批实时统计情况"));
pdfPTable=getInitYdBpTable(size10font,bplist);
document.add(pdfPTable);
//-----------------------------------------
document.add(getP("二、报批情况专项统计"));
document.add(getPtwo("(一) 按报批类型统计"));
document.add(getPtwo(zb2));
document.add(getPthree("表 3 "+year+"年"+month+"月按报批类型统计"));
pdfPTable=getInitBplxxqTable(size10font,lxlist);
document.add(pdfPTable);
document.add(getPthree("表 4 "+year+"年"+month+"月按报批类型同比统计"));
pdfPTable=getInitBplxtbTable(size10font,lxlist);
document.add(pdfPTable);
document.add(getPthree("表 5 "+year+"年"+month+"月按报批类型环比统计"));
pdfPTable=getInitBplxhbTable(size10font,lxhblist);
document.add(pdfPTable);
document.add(getPtwo("(二) 按开发用途统计"));
document.add(getPtwo(zb3));
document.add(getPthree("表 6 "+year+"年"+month+"月按开发用途统计"));
pdfPTable=getInitkfytxqTable(size10font,kflist);
document.add(pdfPTable);
document.add(getPthree("表 7 "+year+"年"+month+"月按开发用途同比统计"));
pdfPTable=getInitkfyttbTable(size10font,kflist);
document.add(pdfPTable);
document.add(getPthree("表 8 "+year+"年"+month+"月按开发用途环比统计"));
pdfPTable=getInitkfythbTable(size10font,kfhblist);
document.add(pdfPTable);
document.add(getPfour("惠州市自然资源局"));
document.add(getPfour(year+"年"+month+"月"));
// 5.关闭文档
document.close();
}
private static void setAlignCenter(PdfPCell pdfPCell){
pdfPCell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中
pdfPCell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
}
private static PdfPCell getcell(String text,Font font,int colspan,int rowspan) {
PdfPCell c1 = new PdfPCell(new Phrase(text,font));
c1.setColspan(colspan);
c1.setRowspan(rowspan);
setAlignCenter(c1);
// t.addCell(c1);
return c1;
}
private static PdfPCell getcell(String text,Font font) {
PdfPCell c1 = new PdfPCell(new Phrase(text,font));
setAlignCenter(c1);
return c1;
}
public static PdfPTable getInitTable(Font font,List<Map<String, Object>> list) throws DocumentException {
PdfPTable t = new PdfPTable(16);
int width[] = { 50, 50,20,40, 80, 50, 50, 50, 50, 60 };
t.setWidthPercentage(100);
PdfPCell c1 = new PdfPCell(new Phrase("指标分配及使用情况监控(公顷)",font));
c1.setColspan(16);
c1.setMinimumHeight(20);
c1.setRowspan(1);
c1.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
c1.setBackgroundColor(new BaseColor(61,85,158));
t.addCell(c1);
t.setSpacingBefore(10);
// t.setWidths(width);c1 = new PdfPCell(new Phrase("",font));
c1.setRowspan(3);
c1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中
c1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);//垂直居中
t.addCell(c1);t.addCell(getcell("新增建设用地计划指标", font,5,1));
t.addCell(getcell("复垦周转指标", font,5,1));
t.addCell(getcell("增减挂钩指标", font,5,1));
t.addCell(getcell("分配", font,1,2));
t.addCell(getcell("使用", font,2,1));
t.addCell(getcell("剩余", font,1,2));
t.addCell(getcell("使用率", font,1,2));
t.addCell(getcell("分配", font,1,2));
t.addCell(getcell("使用", font,2,1));
t.addCell(getcell("剩余", font,1,2));
t.addCell(getcell("使用率", font,1,2));
t.addCell(getcell("分配", font,1,2));
t.addCell(getcell("使用", font,2,1));
t.addCell(getcell("剩余", font,1,2));
t.addCell(getcell("使用率", font,1,2));
t.addCell(getcell("扣除", font));
t.addCell(getcell("预扣", font));
t.addCell(getcell("扣除", font));
t.addCell(getcell("预扣", font));
t.addCell(getcell("扣除", font));
t.addCell(getcell("预扣", font));
for(Map<String, Object> map:list) {
t.addCell(getcell(String.valueOf(map.get("XZQHMC")), font));
t.addCell(getcell(String.valueOf(map.get("XZJSYD")), font));
t.addCell(getcell(String.valueOf(map.get("KC_XZJSYD")), font));
t.addCell(getcell(String.valueOf(map.get("YK_XZJSYD")), font));
t.addCell(getcell(String.valueOf(map.get("SY_XZJSYD")), font));
t.addCell(getcell(String.valueOf(map.get("XZJSYD_SYL")), font));
t.addCell(getcell(String.valueOf(map.get("CJFK")), font));
t.addCell(getcell(String.valueOf(map.get("KC_CJFK")), font));
t.addCell(getcell(String.valueOf(map.get("YK_CJFK")), font));
t.addCell(getcell(String.valueOf(map.get("SY_CJFK")), font));
t.addCell(getcell(String.valueOf(map.get("CJFK_SYL")), font));
t.addCell(getcell(String.valueOf(map.get("ZJGG")), font));
t.addCell(getcell(String.valueOf(map.get("KC_ZJGG")), font));
t.addCell(getcell(String.valueOf(map.get("YK_ZJGG")), font));
t.addCell(getcell(String.valueOf(map.get("SY_ZJGG")), font));
t.addCell(getcell(String.valueOf(map.get("ZJGG_SYL")), font));
}return t;
}
/**
* 用地报批表格
* @param font
* @param list
* @return
* @throws DocumentException
*/
public static PdfPTable getInitYdBpTable(Font font,List<Map<String, Object>> list) throws DocumentException {
PdfPTable t = new PdfPTable(16);
int width[] = { 50, 50,20,40, 80, 50, 50, 50, 50, 60 };
t.setWidthPercentage(100);
PdfPCell c1 = new PdfPCell(new Phrase("用地报批实时监控(公顷)",font));
c1.setColspan(16);
c1.setMinimumHeight(20);
c1.setRowspan(1);
c1.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
c1.setBackgroundColor(new BaseColor(61,85,158));
t.addCell(c1);
t.setSpacingBefore(10);
// t.setWidths(width);c1 = new PdfPCell(new Phrase("",font));
c1.setRowspan(2);
c1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中
c1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);//垂直居中
t.addCell(c1);t.addCell(getcell("农用地", font,3,1));
t.addCell(getcell("其中耕地", font,3,1));
t.addCell(getcell("其中基本农田", font,3,1));
t.addCell(getcell("未利用地", font,3,1));
t.addCell(getcell("合计", font,3,1));
t.addCell(getcell("在办", font,1,1));
t.addCell(getcell("批复", font,1,1));
t.addCell(getcell("小计", font,1,1));
t.addCell(getcell("在办", font,1,1));
t.addCell(getcell("批复", font,1,1));
t.addCell(getcell("小计", font,1,1));
t.addCell(getcell("在办", font,1,1));
t.addCell(getcell("批复", font,1,1));
t.addCell(getcell("小计", font,1,1));
t.addCell(getcell("在办", font,1,1));
t.addCell(getcell("批复", font,1,1));
t.addCell(getcell("小计", font,1,1));
t.addCell(getcell("在办", font,1,1));
t.addCell(getcell("批复", font,1,1));
t.addCell(getcell("小计", font,1,1));
for(Map<String, Object> map:list) {
t.addCell(getcell(String.valueOf(map.get("XZQHMC")), font));
t.addCell(getcell(String.valueOf(map.get("ZZBP_NYDMJ")), font));
t.addCell(getcell(String.valueOf(map.get("YBP_NYDMJ")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_NYDMJ")), font));
t.addCell(getcell(String.valueOf(map.get("ZZBP_GDMJ")), font));
t.addCell(getcell(String.valueOf(map.get("YBP_GDMJ")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_GDMJ")), font));
t.addCell(getcell(String.valueOf(map.get("ZZBP_YJJBNT")), font));
t.addCell(getcell(String.valueOf(map.get("YBP_YJJBNT")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_YJJBNT")), font));
t.addCell(getcell(String.valueOf(map.get("ZZBP_WLYD")), font));
t.addCell(getcell(String.valueOf(map.get("YBP_WLYD")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_WLYD")), font));
t.addCell(getcell(String.valueOf(map.get("ZZBP_TOTAL")), font));
t.addCell(getcell(String.valueOf(map.get("YBP_TOTAL")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL")), font));
}return t;
}
/**
* 报批类型-现期
* @param font
* @param list
* @return
* @throws DocumentException
*/
public static PdfPTable getInitBplxxqTable(Font font,List<Map<String, Object>> list) throws DocumentException {
PdfPTable t = new PdfPTable(6);
int width[] = { 50, 50,20,40, 80, 50, 50, 50, 50, 60 };
t.setWidthPercentage(100);
PdfPCell c1 = new PdfPCell(new Phrase("用地报批类型监测(公顷)",font));
c1.setColspan(6);
c1.setMinimumHeight(20);
c1.setRowspan(1);
c1.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
c1.setBackgroundColor(new BaseColor(61,85,158));
t.addCell(c1);
t.setSpacingBefore(10);
// t.setWidths(width);c1 = new PdfPCell(new Phrase("",font));
c1.setRowspan(1);
c1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中
c1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);//垂直居中
t.addCell(c1);t.addCell(getcell("单独选址项目用地报批", font,1,1));
t.addCell(getcell("批次用地报批", font,1,1));
t.addCell(getcell("“只转不征”项目用地报批", font,1,1));
t.addCell(getcell("报国务院批准的城市建设用地(一年一批次)", font,1,1));
t.addCell(getcell("合计", font,1,1));
for(Map<String, Object> map:list) {
if("现期".equals(map.get("TYPE"))) {
t.addCell(getcell(String.valueOf(map.get("XZQHMC")), font));
t.addCell(getcell(String.valueOf(map.get("DDXZ_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("CSFP_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("ZZBP_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("GWY_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_ZMJ")), font));
}
}return t;
}
/**
* 报批类型-同比
* @param font
* @param list
* @return
* @throws DocumentException
*/
public static PdfPTable getInitBplxtbTable(Font font,List<Map<String, Object>> list) throws DocumentException {
PdfPTable t = new PdfPTable(7);
int width[] = { 50, 50,20,40, 80, 50, 50, 50, 50, 60 };
t.setWidthPercentage(100);
PdfPCell c1 = new PdfPCell(new Phrase("用地报批类型监测(公顷)",font));
c1.setColspan(7);
c1.setMinimumHeight(20);
c1.setRowspan(1);
c1.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
c1.setBackgroundColor(new BaseColor(61,85,158));
t.addCell(c1);
t.setSpacingBefore(10);
// t.setWidths(width);c1 = new PdfPCell(new Phrase("",font));
c1.setRowspan(1);
c1.setColspan(2);
c1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中
c1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);//垂直居中
t.addCell(c1);t.addCell(getcell("单独选址项目用地报批", font,1,1));
t.addCell(getcell("批次用地报批", font,1,1));
t.addCell(getcell("“只转不征”项目用地报批", font,1,1));
t.addCell(getcell("报国务院批准的城市建设用地(一年一批次)", font,1,1));
t.addCell(getcell("合计", font,1,1));
Map<String,List<Map<String, Object>>> maps=list.stream().collect(Collectors.groupingBy(m->String.valueOf(m.get("XZQHMC"))));
for(String key:maps.keySet()) {
t.addCell(getcell(key, font,1,2));
List<Map<String, Object>> list2=maps.get(key);
for(Map<String, Object> map:list2) {
if("现期".equals(map.get("TYPE"))) {
t.addCell(getcell("现期", font));
t.addCell(getcell(String.valueOf(map.get("DDXZ_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("CSFP_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("ZZBP_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("GWY_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_ZMJ")), font));
}
if("同比".equals(map.get("TYPE"))) {
// t.addCell(getcell(String.valueOf(map.get("XZQHMC")), font));
t.addCell(getcell("同比", font));
t.addCell(getcell(String.valueOf(map.get("DDXZ_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("CSFP_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("ZZBP_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("GWY_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_ZMJ")), font));
}
}
}
return t;
}
/**
* 报批类型环比
* @param font
* @param list
* @return
* @throws DocumentException
*/
public static PdfPTable getInitBplxhbTable(Font font,List<Map<String, Object>> list) throws DocumentException {
PdfPTable t = new PdfPTable(7);
int width[] = { 50, 50,20,40, 80, 50, 50, 50, 50, 60 };
t.setWidthPercentage(100);
PdfPCell c1 = new PdfPCell(new Phrase("用地报批类型监测(公顷)",font));
c1.setColspan(7);
c1.setMinimumHeight(20);
c1.setRowspan(1);
c1.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
c1.setBackgroundColor(new BaseColor(61,85,158));
t.addCell(c1);
t.setSpacingBefore(10);
// t.setWidths(width);c1 = new PdfPCell(new Phrase("",font));
c1.setRowspan(1);
c1.setColspan(2);
c1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中
c1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);//垂直居中
t.addCell(c1);t.addCell(getcell("单独选址项目用地报批", font,1,1));
t.addCell(getcell("批次用地报批", font,1,1));
t.addCell(getcell("“只转不征”项目用地报批", font,1,1));
t.addCell(getcell("报国务院批准的城市建设用地(一年一批次)", font,1,1));
t.addCell(getcell("合计", font,1,1));
Map<String,List<Map<String, Object>>> maps=list.stream().collect(Collectors.groupingBy(m->String.valueOf(m.get("XZQHMC"))));
for(String key:maps.keySet()) {
t.addCell(getcell(key, font,1,2));
List<Map<String, Object>> list2=maps.get(key);
for(Map<String, Object> map:list2) {
if("现期".equals(map.get("TYPE"))) {
t.addCell(getcell("现期", font));
t.addCell(getcell(String.valueOf(map.get("DDXZ_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("CSFP_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("ZZBP_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("GWY_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_ZMJ")), font));
}
if("环比".equals(map.get("TYPE"))) {
// t.addCell(getcell(String.valueOf(map.get("XZQHMC")), font));
t.addCell(getcell("环比", font));
t.addCell(getcell(String.valueOf(map.get("DDXZ_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("CSFP_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("ZZBP_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("GWY_ZMJ")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_ZMJ")), font));
}
}
}
return t;
}
/**
* 开发用途-现期
* @param font
* @param list
* @return
* @throws DocumentException
*/
public static PdfPTable getInitkfytxqTable(Font font,List<Map<String, Object>> list) throws DocumentException {
PdfPTable t = new PdfPTable(13);
int width[] = { 50, 50,20,40, 80, 50, 50, 50, 50, 60 };
t.setWidthPercentage(100);
PdfPCell c1 = new PdfPCell(new Phrase("用地报批开发用途监控(公顷)",font));
c1.setColspan(13);
c1.setMinimumHeight(20);
c1.setRowspan(1);
c1.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
c1.setBackgroundColor(new BaseColor(61,85,158));
t.addCell(c1);
t.setSpacingBefore(10);
// t.setWidths(width);c1 = new PdfPCell(new Phrase("",font));
c1.setRowspan(2);
c1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中
c1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);//垂直居中
t.addCell(c1);t.addCell(getcell("商服用地", font,1,2));
t.addCell(getcell("住宅用地", font,1,2));
t.addCell(getcell("工矿仓储用地", font,4,1));
t.addCell(getcell("其它用地", font,5,1));
t.addCell(getcell("合计", font,1,1));
t.addCell(getcell("工业用地", font,1,1));
t.addCell(getcell("仓储用地", font,1,1));
t.addCell(getcell("盐田", font,1,1));
t.addCell(getcell("采矿", font,1,1));
t.addCell(getcell("公服用地", font,1,1));
t.addCell(getcell("特殊用地", font,1,1));
t.addCell(getcell("交通运输用地", font,1,1));
t.addCell(getcell("水利设施用地", font,1,1));
t.addCell(getcell("其它", font,1,1));
t.addCell(getcell("", font,1,1));
for(Map<String, Object> map:list) {
if("现期".equals(map.get("TYPE"))) {
t.addCell(getcell(String.valueOf(map.get("XZQHMC")), font));
t.addCell(getcell(String.valueOf(map.get("SF_YD")), font));
t.addCell(getcell(String.valueOf(map.get("ZZ_YD")), font));
t.addCell(getcell(String.valueOf(map.get("GY_YD")), font));
t.addCell(getcell(String.valueOf(map.get("CC_YD")), font));
t.addCell(getcell(String.valueOf(map.get("YT")), font));
t.addCell(getcell(String.valueOf(map.get("CK")), font));
t.addCell(getcell(String.valueOf(map.get("GF_YD")), font));
t.addCell(getcell(String.valueOf(map.get("TS_YD")), font));
t.addCell(getcell(String.valueOf(map.get("JTYS_YD")), font));
t.addCell(getcell(String.valueOf(map.get("SL")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_QTYD")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL")), font));
}
}return t;
}
/**
* 开发用途-同比
* @param font
* @param list
* @return
* @throws DocumentException
*/
public static PdfPTable getInitkfyttbTable(Font font,List<Map<String, Object>> list) throws DocumentException {
PdfPTable t = new PdfPTable(14);
int width[] = { 50, 50,20,40, 80, 50, 50, 50, 50, 60 };
t.setWidthPercentage(100);
PdfPCell c1 = new PdfPCell(new Phrase("用地报批开发用途监控(公顷)",font));
c1.setColspan(14);
c1.setMinimumHeight(20);
c1.setRowspan(1);
c1.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
c1.setBackgroundColor(new BaseColor(61,85,158));
t.addCell(c1);
t.setSpacingBefore(10);
// t.setWidths(width);c1 = new PdfPCell(new Phrase("",font));
c1.setRowspan(2);
c1.setColspan(2);
c1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中
c1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);//垂直居中
t.addCell(c1);t.addCell(getcell("商服用地", font,1,2));
t.addCell(getcell("住宅用地", font,1,2));
t.addCell(getcell("工矿仓储用地", font,4,1));
t.addCell(getcell("其它用地", font,5,1));
t.addCell(getcell("合计", font,1,1));
t.addCell(getcell("工业用地", font,1,1));
t.addCell(getcell("仓储用地", font,1,1));
t.addCell(getcell("盐田", font,1,1));
t.addCell(getcell("采矿", font,1,1));
t.addCell(getcell("公服用地", font,1,1));
t.addCell(getcell("特殊用地", font,1,1));
t.addCell(getcell("交通运输用地", font,1,1));
t.addCell(getcell("水利设施用地", font,1,1));
t.addCell(getcell("其它", font,1,1));
t.addCell(getcell("", font,1,1));
Map<String,List<Map<String, Object>>> maps=list.stream().collect(Collectors.groupingBy(m->String.valueOf(m.get("XZQHMC"))));
for(String key:maps.keySet()) {
t.addCell(getcell(key, font,1,2));
List<Map<String, Object>> list2=maps.get(key);
for(Map<String, Object> map:list2) {
if("现期".equals(map.get("TYPE"))) {
t.addCell(getcell("现期", font));
t.addCell(getcell(String.valueOf(map.get("SF_YD")), font));
t.addCell(getcell(String.valueOf(map.get("ZZ_YD")), font));
t.addCell(getcell(String.valueOf(map.get("GY_YD")), font));
t.addCell(getcell(String.valueOf(map.get("CC_YD")), font));
t.addCell(getcell(String.valueOf(map.get("YT")), font));
t.addCell(getcell(String.valueOf(map.get("CK")), font));
t.addCell(getcell(String.valueOf(map.get("GF_YD")), font));
t.addCell(getcell(String.valueOf(map.get("TS_YD")), font));
t.addCell(getcell(String.valueOf(map.get("JTYS_YD")), font));
t.addCell(getcell(String.valueOf(map.get("SL")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_QTYD")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL")), font));
}
if("同比".equals(map.get("TYPE"))) {
// t.addCell(getcell(String.valueOf(map.get("XZQHMC")), font));
t.addCell(getcell("同比", font));
t.addCell(getcell(String.valueOf(map.get("SF_YD")), font));
t.addCell(getcell(String.valueOf(map.get("ZZ_YD")), font));
t.addCell(getcell(String.valueOf(map.get("GY_YD")), font));
t.addCell(getcell(String.valueOf(map.get("CC_YD")), font));
t.addCell(getcell(String.valueOf(map.get("YT")), font));
t.addCell(getcell(String.valueOf(map.get("CK")), font));
t.addCell(getcell(String.valueOf(map.get("GF_YD")), font));
t.addCell(getcell(String.valueOf(map.get("TS_YD")), font));
t.addCell(getcell(String.valueOf(map.get("JTYS_YD")), font));
t.addCell(getcell(String.valueOf(map.get("SL")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_QTYD")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL")), font));
}
}
}
return t;
}
/**
* 开发用途环比
* @param font
* @param list
* @return
* @throws DocumentException
*/
public static PdfPTable getInitkfythbTable(Font font,List<Map<String, Object>> list) throws DocumentException {
PdfPTable t = new PdfPTable(14);
int width[] = { 50, 50,20,40, 80, 50, 50, 50, 50, 60 };
t.setWidthPercentage(100);
PdfPCell c1 = new PdfPCell(new Phrase("用地报批开发用途监控(公顷)",font));
c1.setColspan(14);
c1.setMinimumHeight(20);
c1.setRowspan(1);
c1.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
c1.setBackgroundColor(new BaseColor(61,85,158));
t.addCell(c1);
t.setSpacingBefore(10);
// t.setWidths(width);c1 = new PdfPCell(new Phrase("",font));
c1.setRowspan(2);
c1.setColspan(2);
c1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中
c1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);//垂直居中
t.addCell(c1);t.addCell(getcell("商服用地", font,1,2));
t.addCell(getcell("住宅用地", font,1,2));
t.addCell(getcell("工矿仓储用地", font,4,1));
t.addCell(getcell("其它用地", font,5,1));
t.addCell(getcell("合计", font,1,1));
t.addCell(getcell("工业用地", font,1,1));
t.addCell(getcell("仓储用地", font,1,1));
t.addCell(getcell("盐田", font,1,1));
t.addCell(getcell("采矿", font,1,1));
t.addCell(getcell("公服用地", font,1,1));
t.addCell(getcell("特殊用地", font,1,1));
t.addCell(getcell("交通运输用地", font,1,1));
t.addCell(getcell("水利设施用地", font,1,1));
t.addCell(getcell("其它", font,1,1));
t.addCell(getcell("", font,1,1));
Map<String,List<Map<String, Object>>> maps=list.stream().collect(Collectors.groupingBy(m->String.valueOf(m.get("XZQHMC"))));
for(String key:maps.keySet()) {
t.addCell(getcell(key, font,1,2));
List<Map<String, Object>> list2=maps.get(key);
for(Map<String, Object> map:list2) {
if("现期".equals(map.get("TYPE"))) {
t.addCell(getcell("现期", font));
t.addCell(getcell(String.valueOf(map.get("SF_YD")), font));
t.addCell(getcell(String.valueOf(map.get("ZZ_YD")), font));
t.addCell(getcell(String.valueOf(map.get("GY_YD")), font));
t.addCell(getcell(String.valueOf(map.get("CC_YD")), font));
t.addCell(getcell(String.valueOf(map.get("YT")), font));
t.addCell(getcell(String.valueOf(map.get("CK")), font));
t.addCell(getcell(String.valueOf(map.get("GF_YD")), font));
t.addCell(getcell(String.valueOf(map.get("TS_YD")), font));
t.addCell(getcell(String.valueOf(map.get("JTYS_YD")), font));
t.addCell(getcell(String.valueOf(map.get("SL")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_QTYD")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL")), font));
}
if("环比".equals(map.get("TYPE"))) {
// t.addCell(getcell(String.valueOf(map.get("XZQHMC")), font));
t.addCell(getcell("环比", font));
t.addCell(getcell(String.valueOf(map.get("SF_YD")), font));
t.addCell(getcell(String.valueOf(map.get("ZZ_YD")), font));
t.addCell(getcell(String.valueOf(map.get("GY_YD")), font));
t.addCell(getcell(String.valueOf(map.get("CC_YD")), font));
t.addCell(getcell(String.valueOf(map.get("YT")), font));
t.addCell(getcell(String.valueOf(map.get("CK")), font));
t.addCell(getcell(String.valueOf(map.get("GF_YD")), font));
t.addCell(getcell(String.valueOf(map.get("TS_YD")), font));
t.addCell(getcell(String.valueOf(map.get("JTYS_YD")), font));
t.addCell(getcell(String.valueOf(map.get("SL")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL_QTYD")), font));
t.addCell(getcell(String.valueOf(map.get("TOTAL")), font));
}
}
}
return t;
}
public static void table(Document document) throws DocumentException, IOException {
//创建字体
BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
Font size14font = new Font(baseFont,14,Font.NORMAL); //大小为14的正常字体
Font size10font = new Font(baseFont,10,Font.BOLD); //大小为10的粗体
//添加标题
/*PdfPTable tableName = new PdfPTable(1);
tableName.setSpacingBefore(25);
// tableName.setSpacingAfter(25);
tableName.setWidthPercentage(90); //设置标题长度占纸张比例
tableName.addCell(mircoSoftFont("个人信息",size14font,50,true,true));
document.add(tableName);
//添加第二行的数据
PdfPTable secondRowTable = new PdfPTable(3); //三列的意思
secondRowTable.setWidthPercentage(90);
//这里的数组长度是上面创建的列数,数组的总和为1,就是按比例划分的意思
secondRowTable.setTotalWidth(new float[]{0.18f,0.32f,0.5f});
secondRowTable.addCell(mircoSoftFont(" 姓名: ",size10font,50,false,true));
secondRowTable.addCell(mircoSoftFont("李晓明",size10font,50,false,true));
secondRowTable.addCell(mircoSoftFont(" 出生日期: 1994年3月14日",size10font,50,false,true));
document.add(secondRowTable);
//第三行数据
PdfPTable thirdRowTable = new PdfPTable(3);
thirdRowTable.setWidthPercentage(90);
thirdRowTable.setTotalWidth(new float[]{0.18f,0.32f,0.5f});
thirdRowTable.addCell(mircoSoftFont(" 名族:",size10font,50,false,true));
thirdRowTable.addCell(mircoSoftFont("汉族",size10font,50,false,true));
thirdRowTable.addCell(mircoSoftFont(" 联系电话: 13888880000",size10font,50,false,true));
document.add(thirdRowTable);
//第四行数据
PdfPTable fourthRowTable = new PdfPTable(2);
fourthRowTable.setWidthPercentage(90);
fourthRowTable.setTotalWidth(new float[]{0.66f,0.34f});
fourthRowTable.addCell(mircoSoftFont(" 个人描述 :",size10font,175,false,false));
fourthRowTable.addCell(mircoSoftFont("个人特长 :",size10font,175,false,false));
document.add(fourthRowTable);
//第五行
PdfPTable fifthDetailName = new PdfPTable(1);
fifthDetailName.setWidthPercentage(90);
fifthDetailName.addCell(mircoSoftFont("获奖记录 :",size14font,50,true,true));
document.add(fifthDetailName);
//第六行
PdfPTable sisthRowTalbe= new PdfPTable(1);
sisthRowTalbe.setWidthPercentage(90);
sisthRowTalbe.addCell(mircoSoftFont(" 联系地址: "+"广东省广州市天河区XXXXXXXXXXXXXXXXXX",size10font,50,false,true));
document.add(sisthRowTalbe);*/
PdfPTable seventhRowTalbe = new PdfPTable(1);
seventhRowTalbe.setWidthPercentage(90);
seventhRowTalbe.addCell(mircoSoftFont(" 指标分配及使用情况监控 ",size14font,20,false,true,true));
seventhRowTalbe.setSpacingBefore(25);
document.add(seventhRowTalbe);
//第八行
PdfPTable eiththRowTalbe = new PdfPTable(3);
eiththRowTalbe.setWidthPercentage(90);
eiththRowTalbe.setTotalWidth(new float[]{0.3f,0.5f,0.2f});
eiththRowTalbe.addCell(mircoSoftFont(" 分配指标",size10font,20,true,true,false));
eiththRowTalbe.addCell(mircoSoftFont(" 就读日期",size10font,20,true,true,false));
eiththRowTalbe.addCell(mircoSoftFont(" 联系人",size10font,20,true,true,false));
document.add(eiththRowTalbe);
//接下来加List
String school = "XXX学校";
String time = "201909 - 2022-06";
String name = "陈某";
for (int i = 0 ;i<4 ;i++){
PdfPTable tempTable = new PdfPTable(3);
tempTable.setWidthPercentage(90);
tempTable.setTotalWidth(new float[]{0.3f,0.5f,0.2f});
tempTable.addCell(mircoSoftFont(school,size10font,20,true,true,false));
tempTable.addCell(mircoSoftFont(time,size10font,20,true,true,false));
tempTable.addCell(mircoSoftFont(name,size10font,20,true,true,false));
document.add(tempTable);
}}
private static PdfPCell mircoSoftFont(String str,Font font,int high,boolean alignCenter,boolean alignMidde,Boolean alignLeft){
PdfPCell pdfPCell = new PdfPCell(new Phrase(str,font));
pdfPCell.setMinimumHeight(high);
pdfPCell.setUseAscender(true); // 设置可以居中
if (alignCenter){
pdfPCell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中
}
if(alignLeft) {
pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_LEFT);
}
if (alignMidde){
pdfPCell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); // 设置垂直居中
}
return pdfPCell;
}
private static PdfPCell mircoSoftFont(String str,Font font,int high,boolean alignCenter,boolean alignMidde,Boolean alignLeft,boolean haveColor){
PdfPCell pdfPCell = new PdfPCell(new Phrase(str,font));
pdfPCell.setMinimumHeight(high);
pdfPCell.setUseAscender(true); // 设置可以居中
if (alignCenter){
pdfPCell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中
}
if(alignLeft) {
pdfPCell.setHorizontalAlignment(pdfPCell.ALIGN_LEFT);
}
if (alignMidde){
pdfPCell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); // 设置垂直居中
}
if (haveColor){
//颜色代码 RGB
pdfPCell.setBackgroundColor(new BaseColor(217,217,217));
}
return pdfPCell;
}
public static PdfPTable t() {
PdfPTable t = new PdfPTable(3);
t.setSpacingBefore(25);
t.setSpacingAfter(25);
PdfPCell c1 = new PdfPCell(new Phrase("Header1"));
t.addCell(c1);
PdfPCell c2 = new PdfPCell(new Phrase("Header2"));
t.addCell(c2);
PdfPCell c3 = new PdfPCell(new Phrase("Header3"));
t.addCell(c3);
t.addCell("1.1");
t.addCell("1.2");
t.addCell("1.3");
// section1.add(t);
return t;
}
private static PdfPTable createTable(int colNum, float[] columnWidths) {
PdfPTable table = new PdfPTable(colNum);
try {
table.setWidths(columnWidths);
} catch (DocumentException e) {
e.printStackTrace();
}
table.setSpacingBefore(20f);//设置页边距
table.setWidthPercentage(100);//设置表格宽度为100%
return table;
}
private static void generatorHeader(PdfPTable table, String headerSuffix) throws DocumentException, IOException {table.addCell(createPdfPCell("Location 0BBPW", 1, 1, Element.ALIGN_CENTER));
table.addCell(createPdfPCell("哈哈哈", 2, 2, Element.ALIGN_CENTER));}
private static PdfPCell createPdfPCell(String text, int colSpan, int rowSpan) throws DocumentException, IOException {
return createPdfPCell(text, colSpan, rowSpan, Element.ALIGN_RIGHT);
}private static PdfPCell createPdfPCell(String text, int colSpan, int rowSpan, int align) throws DocumentException, IOException {
PdfPCell pdfPCell = new PdfPCell();
pdfPCell.setColspan(colSpan);
pdfPCell.setRowspan(rowSpan);
pdfPCell.setPhrase(createParagraph(text));
pdfPCell.setHorizontalAlignment(align);
pdfPCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
return pdfPCell;
}private static Paragraph createParagraph(String text) throws DocumentException, IOException {
Paragraph paragraph;
BaseFont bfChinese;
bfChinese=BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//jar包
Font font = new Font(bfChinese, 8, Font.NORMAL);
paragraph = new Paragraph(text, font);
paragraph.setAlignment(Phrase.ALIGN_CENTER);
return paragraph;
}
public static String tbhb(String val,String val1) {
double val2=Double.parseDouble(val);
double val3=Double.parseDouble(val1);
double res=0;
if(val3!=0) {
res=Utils.decimalFormat((val2-val3)/val3*100, 2);
}
if(res>=0) {
return "增加"+res+"%";
}else {
return "减少"+res+"%";
}
}
private static Paragraph getP(String name) throws DocumentException, IOException {
BaseFont bfChinese=BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//jar包
Font bigtitielFont = new Font(bfChinese, 18, Font.BOLD);//设置字体
Paragraph p=new Paragraph(name,bigtitielFont);//设置字体样式
p.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
p.setFirstLineIndent(24);// 首行缩进
p.setLeading(35f); //行间距
return p;
}
private static Paragraph getPtwo(String name) throws DocumentException, IOException {
BaseFont bfChinese=BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//jar包
Font FontChinese = new Font(bfChinese, 16, Font.NORMAL);
Paragraph p2=new Paragraph(name,FontChinese);//设置字体样式
p2.setAlignment(3);//设置文字居中 0靠左 1,居中 2,靠右
p2.setFirstLineIndent(24);// 首行缩进
p2.setLeading(35f); //行间距
return p2;
}
private static Paragraph getPthree(String name) throws DocumentException, IOException {
BaseFont bfChinese=BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//jar包
Font FontChinese = new Font(bfChinese, 10, Font.NORMAL);
Paragraph p2=new Paragraph(name,FontChinese);//设置字体样式
p2.setAlignment(1);//设置文字居中 0靠左 1,居中 2,靠右
// p2.setFirstLineIndent(24);// 首行缩进
p2.setLeading(35f); //行间距
return p2;
}
private static Paragraph getPfour(String name) throws DocumentException, IOException {
BaseFont bfChinese=BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//jar包
Font FontChinese = new Font(bfChinese, 16, Font.NORMAL);
Paragraph p2=new Paragraph(name,FontChinese);//设置字体样式
p2.setAlignment(2);//设置文字居中 0靠左 1,居中 2,靠右
// p2.setFirstLineIndent(24);// 首行缩进
p2.setLeading(35f); //行间距
return p2;
}public static void main(String[] args) throws Exception {
// generatePdf("2020");
}}