public void createDocContext(String file,List<Job> jobList,List<Educational> educationalList,List<Family> familyList,Resume resume) throws DocumentException,
IOException {
// 设置纸张大小
Document document = new Document(PageSize.A4);
// 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
RtfWriter2.getInstance(document, new FileOutputStream(file));
document.open();
// 设置中文字体
BaseFont bfChinese = BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
// 标题字体风格
Font titleFont = new Font(bfChinese, 12, Font.BOLD);
// 正文字体风格
Font contextFont = new Font(bfChinese, 10, Font.BOLD);
Paragraph title = new Paragraph("个人简历");
// 设置标题格式对齐方式
title.setAlignment(Element.ALIGN_CENTER);
title.setFont(titleFont);
document.add(title);
// 设置 Table 表格
Table aTable = new Table(7);
int width[] = { 10,15,15,15,15,15,15 };
aTable.setWidths(width);// 设置每列所占比例
aTable.setWidth(90); // 占页面宽度 90%
aTable.setAlignment(Element.ALIGN_CENTER);// 居中显示
aTable.setAutoFillEmptyCells(true); // 自动填满
aTable.setBorderWidth(1); // 边框宽度
aTable.setBorderColor(new Color(0, 125, 255)); // 边框颜色
aTable.setPadding(0);// 衬距
aTable.setSpacing(0);// 即单元格之间的间距
aTable.setBorder(2);// 边框
// 设置表头
Cell haderCell = new Cell(new Phrase("基本信息",contextFont));
haderCell.setHeader(true);
haderCell.setColspan(7);
aTable.addCell(haderCell);
aTable.endHeaders();
Font fontChinese = new Font(bfChinese, 10, Font.NORMAL);
aTable.addCell(new Phrase("姓名:", fontChinese));
aTable.addCell(new Phrase(resume.getUsername(), fontChinese));
aTable.addCell(new Phrase("性别:", fontChinese));
aTable.addCell(new Phrase(resume.getGender(), fontChinese));
aTable.addCell(new Phrase("出生日期:", fontChinese));
aTable.addCell(new Phrase(resume.getDateofbirth() == null ? "":new SimpleDateFormat("yyyy-MM-hh").format(resume.getDateofbirth()), fontChinese));
//添加图片
String path = this.getClass().getResource("/").getPath().replace("%20", " ");
String path1=path.substring(1, path.lastIndexOf("/"));;
String path2=path1.substring(0,path1.lastIndexOf("/"));
String path3=path2.substring(0,path2.lastIndexOf("/"));
String url=path3+"/newImg/"+resume.getImagePath();
Cell cell1_7 = null;
if(new File(url).exists()){
Image img = Image.getInstance(url);
img.setAbsolutePosition(0, 0);
img.setAlignment(Image.MIDDLE);//设置图片显示位置
img.scaleAbsolute(70,90);//直接设定显示尺寸
cell1_7 = new Cell(img);
}else{
cell1_7 = new Cell(new Phrase("", fontChinese));
}
cell1_7.setRowspan(5);
aTable.addCell(cell1_7);
aTable.addCell(new Phrase("民族:", fontChinese));
aTable.addCell(new Phrase(resume.getNation(), fontChinese));
aTable.addCell(new Phrase("户籍地:", fontChinese));
aTable.addCell(new Phrase(resume.getJgd(), fontChinese));
aTable.addCell(new Phrase("籍贯:", fontChinese));
aTable.addCell(new Phrase(resume.getJg(), fontChinese));
aTable.addCell(new Phrase("身高:", fontChinese));
aTable.addCell(new Phrase(resume.getStature(), fontChinese));
aTable.addCell(new Phrase("婚姻状况:", fontChinese));
if("0".equals(resume.getWedlock())){
aTable.addCell(new Phrase("未婚", fontChinese));
}else if("1".equals(resume.getWedlock())){
aTable.addCell(new Phrase("已婚", fontChinese));
}else{
aTable.addCell(new Phrase("", fontChinese));
}
aTable.addCell(new Phrase("政治面貌:", fontChinese));
if("0".equals(resume.getPolitical())){
aTable.addCell(new Phrase("中共党员", fontChinese));
}else if("1".equals(resume.getPolitical())){
aTable.addCell(new Phrase("团员", fontChinese));
}else if("2".equals(resume.getPolitical())){
aTable.addCell(new Phrase("群众", fontChinese));
}else{
aTable.addCell(new Phrase("", fontChinese));
}
aTable.addCell(new Phrase("最高学历:", fontChinese));
if("0".equals(resume.getEducational())){
aTable.addCell(new Phrase("博士", fontChinese));
}else if("1".equals(resume.getEducational())){
aTable.addCell(new Phrase("研究生", fontChinese));
}else if("2".equals(resume.getEducational())){
aTable.addCell(new Phrase("本科", fontChinese));
}else if("3".equals(resume.getEducational())){
aTable.addCell(new Phrase("专科", fontChinese));
}else{
aTable.addCell(new Phrase("", fontChinese));
}
aTable.addCell(new Phrase("外语水平:", fontChinese));
aTable.addCell(new Phrase(resume.getLanguage(), fontChinese));
aTable.addCell(new Phrase("计算机水平:", fontChinese));
aTable.addCell(new Phrase(resume.getComputer(), fontChinese));
aTable.addCell(new Phrase("本人身份:", fontChinese));
aTable.addCell(new Phrase(resume.getIdentification(), fontChinese));
aTable.addCell(new Phrase("是否服从调剂:", fontChinese));
if("0".equals(resume.getDistribution())){
aTable.addCell(new Phrase("否", fontChinese));
}else if("1".equals(resume.getDistribution())){
aTable.addCell(new Phrase("是", fontChinese));
}else{
aTable.addCell(new Phrase("", fontChinese));
}
aTable.addCell(new Phrase("参加工作时间:", fontChinese));
aTable.addCell(new Phrase(resume.getJobtime() ==null ? "":new SimpleDateFormat("yyyy-MM-hh").format(resume.getJobtime()), fontChinese));
aTable.addCell(new Phrase("手机号:", fontChinese));
aTable.addCell(new Phrase(resume.getMobile(), fontChinese));
aTable.addCell(new Phrase("身份证号:", fontChinese));
Cell cell6_4 = new Cell(new Phrase(resume.getIdentificationnum(), fontChinese));
cell6_4.setColspan(2);
aTable.addCell(cell6_4);
aTable.addCell(new Phrase("电子邮箱:", fontChinese));
aTable.addCell(new Phrase(resume.getEmail(), fontChinese));
aTable.addCell(new Phrase("通讯地址:", fontChinese));
Cell cell7_2 = new Cell(new Phrase(resume.getAddress(), fontChinese));
cell7_2.setColspan(3);
aTable.addCell(cell7_2);
aTable.addCell(new Phrase("邮编:", fontChinese));
Cell cell7_6 = new Cell(new Phrase(resume.getCodePostal(), fontChinese));
cell7_6.setColspan(2);
aTable.addCell(cell7_6);
Cell cell8_1 = new Cell(new Phrase("本科及以上学习经历(最高学历倒序填写)", fontChinese));
if(educationalList !=null && educationalList.size() >0){
cell8_1.setRowspan(educationalList.size()+1);
}
aTable.addCell(cell8_1);
aTable.addCell(new Phrase("起止时间", fontChinese));
Cell cell8_3 = new Cell(new Phrase("学校", fontChinese));
cell8_3.setColspan(2);
aTable.addCell(cell8_3);
aTable.addCell(new Phrase("专业", fontChinese));
aTable.addCell(new Phrase("所获学位", fontChinese));
aTable.addCell(new Phrase("是否全日制", fontChinese));
if(educationalList !=null && educationalList.size() >0){
for(int i=0;i<educationalList.size();i++){
Educational educational = educationalList.get(i);
aTable.addCell(new Phrase(educational.getSetime(), fontChinese));
Cell cell9_3 = new Cell(new Phrase(educational.getSchoolname(), fontChinese));
cell9_3.setColspan(2);
aTable.addCell(cell9_3);
aTable.addCell(new Phrase(educational.getProfession(), fontChinese));
aTable.addCell(new Phrase(educational.getAcademicdegree(), fontChinese));
aTable.addCell(new Phrase(educational.getFulltime(), fontChinese));
}
}
Cell cell12_1 = new Cell(new Phrase("工作经验(不含实习)(近期经验倒序填写))", fontChinese));
if(jobList !=null && jobList.size() >0){
cell12_1.setRowspan(jobList.size()+1);
}
aTable.addCell(cell12_1);
aTable.addCell(new Phrase("起止时间", fontChinese));
Cell cell12_3 = new Cell(new Phrase("工作单位及内容", fontChinese));
cell12_3.setColspan(2);
aTable.addCell(cell12_3);
Cell cell12_5 = new Cell(new Phrase("部门", fontChinese));
cell12_5.setColspan(2);
aTable.addCell(cell12_5);
aTable.addCell(new Phrase("职务", fontChinese));
if(jobList !=null && jobList.size() >0){
for(int j=0;j<jobList.size();j++){
Job job = jobList.get(j);
aTable.addCell(new Phrase(job.getSntime(), fontChinese));
Cell cell13_3 = new Cell(new Phrase(job.getJobname(), fontChinese));
cell13_3.setColspan(2);
aTable.addCell(cell13_3);
Cell cell13_5 = new Cell(new Phrase(job.getDepartment(), fontChinese));
cell13_5.setColspan(2);
aTable.addCell(cell13_5);
aTable.addCell(new Phrase(job.getPosition(), fontChinese));
}
}
aTable.addCell(new Phrase("证书及职称", fontChinese));
Cell cell18_2 = new Cell(new Phrase(resume.getZhengshu(), fontChinese));
cell18_2.setColspan(6);
aTable.addCell(cell18_2);
aTable.addCell(new Phrase("专业经验及特长(限两百字)", fontChinese));
Cell cell19_2 = new Cell(new Phrase(resume.getZhuanyetechang(), fontChinese));
cell19_2.setColspan(6);
aTable.addCell(cell19_2);
aTable.addCell(new Phrase("主要学术研究成果", fontChinese));
Cell cell20_2 = new Cell(new Phrase(resume.getXueshu(), fontChinese));
cell20_2.setColspan(6);
aTable.addCell(cell20_2);
aTable.addCell(new Phrase("曾获奖惩情况", fontChinese));
Cell cell21_2 = new Cell(new Phrase(resume.getJiangcheng(), fontChinese));
cell21_2.setColspan(6);
aTable.addCell(cell21_2);
Cell cell22_1 = new Cell(new Phrase("家庭主要成员", fontChinese));
if(familyList !=null && familyList.size()>0){
cell22_1.setRowspan(familyList.size()+1);
}
aTable.addCell(cell22_1);
aTable.addCell(new Phrase("姓名", fontChinese));
aTable.addCell(new Phrase("关系", fontChinese));
Cell cell22_4 = new Cell(new Phrase("单位", fontChinese));
cell22_4.setColspan(2);
aTable.addCell(cell22_4);
aTable.addCell(new Phrase("职务", fontChinese));
aTable.addCell(new Phrase("联系方式", fontChinese));
if(familyList !=null && familyList.size()>0){
for(int k=0;k<familyList.size();k++){
Family family = familyList.get(k);
aTable.addCell(new Phrase(family.getFamilyname(), fontChinese));
aTable.addCell(new Phrase(family.getRelation(), fontChinese));
Cell cell23_4 = new Cell(new Phrase(family.getWorkunit(), fontChinese));
cell23_4.setColspan(2);
aTable.addCell(cell23_4);
aTable.addCell(new Phrase(family.getPosition(), fontChinese));
aTable.addCell(new Phrase(family.getPhone(), fontChinese));
}
}
aTable.addCell(new Phrase("其他事项说明", fontChinese));
Cell cell27_2 = new Cell(new Phrase(resume.getQita(), fontChinese));
cell27_2.setColspan(6);
aTable.addCell(cell27_2);
document.add(aTable);
document.add(new Paragraph("\n"));
document.close();
}
public String daochuAll(){
String sessionId=(String)ServletActionContext.getRequest().getSession().getId();
String tmpDir = "D:/"+sessionId+"_zip/";
File temp = new File(tmpDir);
if(!temp.exists()){
temp.mkdirs();
}
if(resumeIds !=null){
String[] resumeIdList =resumeIds.split(",");
if(resumeIdList !=null && resumeIdList.length>0){
//去掉重复简历
List<String> idsList = new ArrayList<String>();
for (int i=0; i<resumeIdList.length; i++) {
if(!idsList.contains(resumeIdList[i])) {
idsList.add(resumeIdList[i]);
}
}
if(idsList !=null && idsList.size()>0){
File zipFile = new File(tmpDir +"简历集合.zip") ; // 定义压缩文件名称
ZipOutputStream zipOut = null ; // 声明压缩流对象
try {
zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;
zipOut.setEncoding("GBK");
for(int i=0;i<idsList.size();i++ ){
setResumeDoc(idsList.get(i));
String fileName =null;
if(resume.getResumename() ==null || "".equals(resume.getResumename())){
fileName = UUIDGenerator.generate()+".doc";
}else{
fileName = resume.getResumename()+".doc";
}
fileName = tmpDir+fileName;
WordTools b = new WordTools();
try {
b.createDocContext(fileName,jobList,educationalList,familyList,resume);
removeDoc();
File file = new File(fileName) ; // 定义要压缩的文件
InputStream input = new FileInputStream(file) ; // 定义文件的输入流
zipOut.putNextEntry(new ZipEntry(file.getName())) ; // 设置ZipEntry对象
int temp1 = 0 ;
while((temp1=input.read())!=-1){ // 读取内容
zipOut.write(temp1) ; // 压缩输出
}
input.close() ; // 关闭输入流
} catch (Exception e) {
e.printStackTrace();
}
}
zipOut.close() ; // 关闭输出流
} catch (Exception e1) {
e1.printStackTrace();
}
HttpServletResponse response =ServletActionContext.getResponse();
try {
Utils.fileDownLoad(response,tmpDir+zipFile.getName());
} catch (ServletException e) {
e.printStackTrace();
}
Utils.DeleteFolder(tmpDir);
}
}
}
return null;
}
需要jar包:itext-2.1.5.jar、itext-rtf-2.1.7.jar、iTextAsian.jar、apache-ant-zip.jar