1.首先添加依赖
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.10</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
2.最基础的用法为:
// 1.新建document对象
Document document = new Document();
// 2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
// 创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D:/test.pdf"));
Anchor anchorTarget = new Anchor("ccccccccccccccccc");
anchorTarget.setName("bbbbbbbbbbbbbbbb");
Paragraph paragraph1 = new Paragraph();
paragraph1.setSpacingBefore(50);
paragraph1.add(anchorTarget);
document.add(paragraph1);
// 3.打开文档
document.open();
// 4.添加一个内容段落
document.add(new Paragraph("Hello World!"));
// 5.关闭文档
document.close();
3.我曾经写过的一个项目中的例子(最后有效果图):
Map resultMap = new HashMap();
resultMap.put("RWBH",rwbh);
Map rwList = mybatisRepository.selectOne(this.namespace + "queryRwxx", resultMap);
List<Map> ldList = mybatisRepository.selectByParams(this.namespace + "queryLdxx", resultMap);
// 定义全局的字体静态变量
Font titlefont;
Font headfont;
Font keyfont;
Font textfont = null;
// 最大宽度
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, 15, Font.NORMAL);
} catch (Exception e) {
e.printStackTrace();
}
BaseFont bf;
Font font = null;
try {
bf = BaseFont.createFont( "STSong-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);//创建字体
font = new Font(bf,20,Font.BOLD);//使用字体
} catch (Exception e) {
e.printStackTrace();
}
Document document = new Document(new RectangleReadOnly(842F, 595F));
try {
String filePath="E:/file/dzld/"+rwbh+".pdf";
PdfWriter.getInstance(document, new FileOutputStream(filePath));
document.open();
Paragraph paragraph=new Paragraph("运输服务路单汇总表",font);
paragraph.setAlignment(1);
document.add(paragraph);//引用字体
float[] widths = {25f,25f,25f,25f,25f,25f,25f,25f};// 设置表格的列宽和列数 默认是4列
PdfPTable table = new PdfPTable(widths);// 建立一个pdf表格
table.setSpacingBefore(20f);
table.setWidthPercentage(100);// 设置表格宽度为100%
PdfPCell cell = null;
//第一行
cell = new PdfPCell(new Paragraph("优选编号",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setFixedHeight(50);
table.addCell(cell);
cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("RWBH")),textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setColspan(3);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("任务名称",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("RWMC")),textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setColspan(3);
table.addCell(cell);
//第2行
cell = new PdfPCell(new Paragraph("车牌号",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setFixedHeight(50);
table.addCell(cell);
cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("CPH")),textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setColspan(3);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("车型",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("CXMC")),textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setColspan(3);
table.addCell(cell);
//第3行
cell = new PdfPCell(new Paragraph("用车单位",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setFixedHeight(50);
table.addCell(cell);
cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("FQDWMC")),textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setColspan(3);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("派车单位",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("JDDWMC")),textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setColspan(3);
table.addCell(cell);
//第4行
cell = new PdfPCell(new Paragraph("起止时间",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setFixedHeight(50);
table.addCell(cell);
cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("ZZKGSJ"))+"至"+StringUtil.null2blank(rwList.get("ZWWGSJ")),textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setColspan(3);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("总工作量",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("ZGZL")),textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("总运费",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("ZYF")),textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
//第5行
cell = new PdfPCell(new Paragraph("开始时间",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setFixedHeight(50);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("结束时间",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("工作量",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("单价",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("运费(元)",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("桥路费(元)",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("甲方现场人员",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Paragraph("路单复核人",textfont));//
cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
String LKGSJ="";
String LWGSJ="";
String GZL="";
String DJ="";
String YF="";
String QLF="";
String JFXCRY="";
String FHRMC="";
if (ldList.size()>0){
for (int i = 0; i <ldList.size(); i++) {
LKGSJ=StringUtil.null2blank(ldList.get(i).get("LKGSJ"));
LWGSJ=StringUtil.null2blank(ldList.get(i).get("LWGSJ"));
GZL=StringUtil.null2blank(ldList.get(i).get("FHGZL"));
DJ=StringUtil.null2blank(ldList.get(i).get("FHDJ"));
YF=StringUtil.null2blank(ldList.get(i).get("FHYF"));
QLF=StringUtil.null2blank(ldList.get(i).get("FHQLF"));
JFXCRY=StringUtil.null2blank(ldList.get(i).get("JFXCRY"));;
FHRMC=StringUtil.null2blank(ldList.get(i).get("FHRMC"));
//设置编号单元格
PdfPCell cell11=new PdfPCell(new Paragraph(LKGSJ,textfont));
PdfPCell cell22=new PdfPCell(new Paragraph(LWGSJ,textfont));
PdfPCell cell33=new PdfPCell(new Paragraph(GZL,textfont));
PdfPCell cell44=new PdfPCell(new Paragraph(DJ,textfont));
PdfPCell cell55=new PdfPCell(new Paragraph(YF,textfont));
PdfPCell cell66=new PdfPCell(new Paragraph(QLF,textfont));
PdfPCell cell77=new PdfPCell(new Paragraph(JFXCRY,textfont));
PdfPCell cell88=new PdfPCell(new Paragraph(FHRMC,textfont));
//单元格水平对齐方式
cell11.setHorizontalAlignment(Element.ALIGN_CENTER);
cell11.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell11.setFixedHeight(50);
//单元格垂直对齐方式
cell22.setHorizontalAlignment(Element.ALIGN_CENTER);
cell22.setVerticalAlignment(Element.ALIGN_CENTER);
cell22.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell33.setHorizontalAlignment(Element.ALIGN_CENTER);
cell33.setVerticalAlignment(Element.ALIGN_CENTER);
cell33.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell44.setHorizontalAlignment(Element.ALIGN_CENTER);
cell44.setVerticalAlignment(Element.ALIGN_CENTER);
cell44.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell55.setHorizontalAlignment(Element.ALIGN_CENTER);
cell55.setVerticalAlignment(Element.ALIGN_CENTER);
cell55.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell66.setHorizontalAlignment(Element.ALIGN_CENTER);
cell66.setVerticalAlignment(Element.ALIGN_CENTER);
cell66.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell77.setHorizontalAlignment(Element.ALIGN_CENTER);
cell77.setVerticalAlignment(Element.ALIGN_CENTER);
cell77.setVerticalAlignment(cell.ALIGN_MIDDLE);
cell88.setHorizontalAlignment(Element.ALIGN_CENTER);
cell88.setVerticalAlignment(Element.ALIGN_CENTER);
cell88.setVerticalAlignment(cell.ALIGN_MIDDLE);
table.addCell(cell11);
table.addCell(cell22);
table.addCell(cell33);
table.addCell(cell44);
table.addCell(cell55);
table.addCell(cell66);
table.addCell(cell77);
table.addCell(cell88);
}
document.add(table);
document.close();
}
upload(rwbh);
} catch (Exception e) {
System.out.println("file create exception");
}
4.效果图