SpringBoot--整合itextpdf
SpringBoot--整合itextpdf
Dependency
<!--SpringBoot:PDF-->
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
/**
*@Description: 生成pdf
*@Author: HuYuQiao
*/
private static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
private static final Integer size = 20;
private static final String formatTimeStr = format.format(new Date());
@Test
public void testPDF(){
Document document = new Document(PageSize.A4);
try{
PdfWriter.getInstance(document, new FileOutputStream("src/main/resources/hyq.pdf"));
document.addTitle("PDF Title");
document.open();
//PDF--添加table
PdfPTable pdfPTable = generatePDFTable();
document.add(pdfPTable);
} catch (Exception e) {
e.printStackTrace();
} finally {
document.close();
}
}
/**
*@Description: 生成pdf的talble
*@Author: HuYuQiao
*/
public PdfPTable generatePDFTable() throws IOException, DocumentException {
Font font = new Font(BaseFont.createFont( "STSongStd-Light" ,"UniGB-UCS2-H",BaseFont.NOT_EMBEDDED));
font.setSize(7);
PdfPTable table = new PdfPTable(10);
//PDF--第一行
PdfPCell pdfTitle= new PdfPCell(new Phrase("PDF导出模板", font));
pdfTitle.setColspan(10); //所占列数
setStyle(pdfTitle);
table.addCell(pdfTitle);
PdfPCell officialSeal = new PdfPCell(new Phrase("申请单位公章:", font));
officialSeal.setColspan(2);
setStyle(officialSeal);
table.addCell(officialSeal);
// 空格 第二行
PdfPCell cell3 = new PdfPCell(new Phrase(" "));
cell3.setColspan(2);
setStyle(cell3);
table.addCell(cell3);
// 空格 第二行
PdfPCell cell4 = new PdfPCell(new Phrase(" "));
cell4.setColspan(1);
setStyle(cell4);
table.addCell(cell4);
// 申请日期: 第二行
PdfPCell cell5 = new PdfPCell(new Phrase("申请日期:" + formatTimeStr, font));
cell5.setColspan(2);
setStyle(cell5);
table.addCell(cell5);
// 空格 第二行
PdfPCell cell6 = new PdfPCell(new Phrase(" "));
cell6.setColspan(1);
setStyle(cell6);
table.addCell(cell6);
// 单位:元 第二行
PdfPCell cell7 = new PdfPCell(new Phrase("单位:元", font));
cell7.setColspan(2);
setStyle(cell7);
table.addCell(cell7);
// 序号 第三,四行
PdfPCell cell8 = new PdfPCell(new Phrase("序号", font));
cell8.setColspan(1); // 占几列
cell8.setRowspan(2); // 占几行
setStyle(cell8);
table.addCell(cell8);
// 资金性质 第三,四行
PdfPCell cell9 = new PdfPCell(new Phrase("资金性质", font));
cell9.setColspan(1); // 占几列
cell9.setRowspan(2); // 占几行
setStyle(cell9);
table.addCell(cell9);
// 编码 第三,四行
PdfPCell cell11 = new PdfPCell(new Phrase("编码", font));
cell11.setColspan(1); // 占几列
cell11.setRowspan(2); // 占几行
setStyle(cell11);
table.addCell(cell11);
// 名称 第三,四行
PdfPCell cell12 = new PdfPCell(new Phrase("名称", font));
cell12.setColspan(1); // 占几列
cell12.setRowspan(2); // 占几行
setStyle(cell12);
table.addCell(cell12);
// 项目名称 第三,四行
PdfPCell cell13 = new PdfPCell(new Phrase("项目名称", font));
cell13.setColspan(1); // 占几列
cell13.setRowspan(2); // 占几行
setStyle(cell13);
table.addCell(cell13);
// 姓名 第三,四行
PdfPCell cell14 = new PdfPCell(new Phrase("姓名", font));
cell14.setColspan(1); // 占几列
cell14.setRowspan(2); // 占几行
setStyle(cell14);
table.addCell(cell14);
// 银行账号 第三,四行
PdfPCell cell15 = new PdfPCell(new Phrase("银行账号", font));
cell15.setColspan(1); // 占几列
cell15.setRowspan(2); // 占几行
setStyle(cell15);
table.addCell(cell15);
// 开户银行 第三,四行
PdfPCell cell16 = new PdfPCell(new Phrase("开户银行", font));
cell16.setColspan(1); // 占几列
cell16.setRowspan(2); // 占几行
setStyle(cell16);
table.addCell(cell16);
// 申请金额 第三,四行
PdfPCell cell17 = new PdfPCell(new Phrase("申请金额", font));
cell17.setColspan(1); // 占几列
cell17.setRowspan(2); // 占几行
setStyle(cell17);
table.addCell(cell17);
// 核定金额 第三,四行
PdfPCell cell18 = new PdfPCell(new Phrase("核定金额", font));
cell18.setColspan(1); // 占几列
cell18.setRowspan(2); // 占几行
setStyle(cell18);
table.addCell(cell18);
// 根据自己业务封装数据
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 10; j++) {
PdfPCell cell19 = new PdfPCell(new Phrase("坑位置"+i+j, font));
cell19.setColspan(1); // 占几列
cell19.setRowspan(1); // 占几行
setStyle(cell19);
table.addCell(cell19);
}
}
return table;
}
/**
* 设置样式
* @param cell
*/
private void setStyle(PdfPCell cell){
cell.setFixedHeight(size);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);//设置水平居中
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置垂直居中
}
Map遍历与List排序
@Test
public void testSort(){
HashMap<String, Integer> items = new HashMap<>();
items.put("coins", 5);
items.put("pens", 2);
items.put("chairs", 7);
items.forEach((key, value) -> System.out.println(key + " " + value));
for (Map.Entry<String, Integer> item : items.entrySet()){
System.out.println(item.getKey() + " " + item.getValue());
}
List<Content> contentList = new ArrayList<>();
contentList.add(new Content("A", "A", "A"));
contentList.add(new Content("B", "B", "B"));
contentList.add(new Content("C", "C", "C"));
contentList.sort(Comparator.comparing(Content::getPrice).reversed());
contentList.stream().forEach(content -> {
System.out.println(content);
});
}
我曾七次鄙视自己的灵魂:
第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。