Commit 260d22b8 authored by liaoanyuan's avatar liaoanyuan

PC端我的方案导出功能-pdfUtil工具类

parent b9c3bddf
package cn.wisenergy.service.common;
import cn.wisenergy.model.app.Volunteer;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import java.io.Serializable;
import java.util.List;
/**
* 创建PDF工具类
*/
public class PdfUtil implements Serializable {
private static final long serialVersionUID = -8441049720133017215L;
// 定义全局的字体静态变量
private static Font titlefont;
private static Font headfont;
private static Font keyfont;
private static Font textfont;
//序号
private Integer id=0;
// 最大宽度
private static int maxWidth = 520;
// 静态代码块
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) {
e.printStackTrace();
}
}
// 生成PDF文件
public void generatePDF(Document document, List<Volunteer> list) throws Exception {
// 表格
PdfPTable table = createTable(new float[] { 40,80,80, 80, 80, 80, 80, 80, 40, 40, 40 });
table.addCell(createCell("普通类", headfont, Element.ALIGN_CENTER, 11, 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));
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));
for (Volunteer volunteer : list)
{
table.addCell(createCell((++id).toString() , textfont));
table.addCell(createCell(volunteer.getMajorName(), textfont));
table.addCell(createCell(volunteer.getAcademy(), textfont));
table.addCell(createCell(volunteer.getCourseDemand(), textfont));
table.addCell(createCell(volunteer.getNature(), textfont));
table.addCell(createCell(volunteer.getYearLimit().toString(), textfont));
table.addCell(createCell(volunteer.getPlanNum().toString(), textfont));
table.addCell(createCell(null==volunteer.getCastArchivesNum()?"":volunteer.getCastArchivesNum().toString(), textfont));
table.addCell(createCell(null==volunteer.getLaunchNum()?"":volunteer.getLaunchNum().toString(), textfont));
table.addCell(createCell(null==volunteer.getLowestMark()?"":volunteer.getLowestMark(), textfont));
table.addCell(createCell(null==volunteer.getLowestRank()?"":volunteer.getLowestRank(), textfont));
}
document.add(table);
}
/**------------------------创建表格单元格的方法start----------------------------*/
/**
* 创建单元格(指定字体)
* @param value
* @param font
* @return
*/
public PdfPCell createCell(String value, Font font) {
PdfPCell cell = new PdfPCell();
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setPhrase(new Phrase(value, font));
return cell;
}
/**
* 创建单元格(指定字体、水平..)
* @param value
* @param font
* @param align
* @return
*/
public 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
* @return
*/
public PdfPCell createCell(String value, Font font, int align, int colspan) {
PdfPCell cell = new PdfPCell();
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setHorizontalAlignment(align);
cell.setColspan(colspan);
cell.setPhrase(new Phrase(value, font));
return cell;
}
/**
* 创建单元格(指定字体、水平居..、单元格跨x列合并、设置单元格内边距)
* @param value
* @param font
* @param align
* @param colspan
* @param boderFlag
* @return
*/
public 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;
}
/**
* 创建单元格(指定字体、水平..、边框宽度:0表示无边框、内边距)
* @param value
* @param font
* @param align
* @param borderWidth
* @param paddingSize
* @param flag
* @return
*/
public PdfPCell createCell(String value, Font font, int align, float[] borderWidth, float[] paddingSize, boolean flag) {
PdfPCell cell = new PdfPCell();
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setHorizontalAlignment(align);
cell.setPhrase(new Phrase(value, font));
cell.setBorderWidthLeft(borderWidth[0]);
cell.setBorderWidthRight(borderWidth[1]);
cell.setBorderWidthTop(borderWidth[2]);
cell.setBorderWidthBottom(borderWidth[3]);
cell.setPaddingTop(paddingSize[0]);
cell.setPaddingBottom(paddingSize[1]);
if (flag) {
cell.setColspan(2);
}
return cell;
}
/**------------------------创建表格单元格的方法end----------------------------*/
/**--------------------------创建表格的方法start------------------- ---------*/
/**
* 创建默认列宽,指定列数、水平(居中、右、左)的表格
* @param colNumber
* @param align
* @return
*/
public PdfPTable createTable(int colNumber, int align) {
PdfPTable table = new PdfPTable(colNumber);
try {
table.setTotalWidth(maxWidth);
table.setLockedWidth(true);
table.setHorizontalAlignment(align);
table.getDefaultCell().setBorder(1);
} catch (Exception e) {
e.printStackTrace();
}
return table;
}
/**
* 创建指定列宽、列数的表格
* @param widths
* @return
*/
public PdfPTable createTable(float[] widths) {
PdfPTable table = new PdfPTable(widths);
try {
table.setTotalWidth(maxWidth);
table.setLockedWidth(true);
table.setHorizontalAlignment(Element.ALIGN_CENTER);
table.getDefaultCell().setBorder(1);
} catch (Exception e) {
e.printStackTrace();
}
return table;
}
/**
* 创建空白的表格
* @return
*/
public PdfPTable createBlankTable() {
PdfPTable table = new PdfPTable(1);
table.getDefaultCell().setBorder(0);
table.addCell(createCell("", keyfont));
table.setSpacingAfter(20.0f);
table.setSpacingBefore(20.0f);
return table;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment