您的位置:首页 > 编程语言 > Java开发

java利用joup,imageio,base64来实现简历下载为html格式。

2017-04-26 10:28 295 查看

1 需要的依赖包

<!--html操作工具-->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>

2 远程图片转为base64编码

import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;

public class ImagesToBase64{

public static String encodeImgageToBase64(URL imageUrl) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
ByteArrayOutputStream outputStream = null;
try {
BufferedImage bufferedImage = ImageIO.read(imageUrl);
outputStream = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "jpg", outputStream);
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串
}

}


Base64 在CSS中的使用

.demoImg{
background-image:
url("data:image/jpg;base64,/9j/4QMZRXhpZgAASUkqAAgAAAAL....");}

Base64 在HTML中的使用

<img width="40" height="30" src="data:image/jpg;base64,/9j/4QMZRXhpZgAASUkqAAgAAAAL...." />

3 使用springmv来接收请求并打开浏览器下载框(不支持ajax请求)

/**
*
* 下载简历为html
* author Miss Xiao
* date 2017.04.25 20:21
*/
@RequestMapping("downloadFile")
public void downloadFile(HttpServletResponse response, HttpServletRequest request){

//基础信息
RmResumeBasiVo rmResumeBasiVo = rmResumeBasiService.selectResumeBaseVoByType(super.getUseNo(),1);
if (null!=rmResumeBasiVo) {
Long resumeNo = rmResumeBasiVo.getResumeNo();
//意向行业
RmResumeIntentionVo rmResumeIntentionVo = rmResumeIntentionService.findOneVo(resumeNo);
RmResumeJobVo jobVo = new RmResumeJobVo();
jobVo.setResumeNo(resumeNo);
//工作经验集合
List<RmResumeJobVo> jobVos = rmResumeJobService.findListVo(jobVo);
//教育背景
RmResumeEducationVo rmResumeEducationVo = rmResumeEducationService.findOneVo(resumeNo);
Date date = new Date();
//打开下载框(谷歌无效)
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName="+date.getTime()+".html");
String url = request.getServletContext().getRealPath("/WEB-INF/pages/common/resume_template.html");
try {
File file=new File(url);
InputStream inputStream=new FileInputStream(file);
//获取html
Document doc = Jsoup.parse(inputStream,"UTF-8","http://www.oschina.net/");

//插入基础信息
doc.getElementById("realName").text(rmResumeBasiVo.getRealName());
doc.getElementById("headPortrait").attr("src", "data:image/jpg;base64,"+ImagesToBase64.encodeImgageToBase64(new URL(rmResumeBasiVo.getHeadPortrait())));
doc.getElementById("age").text("24");
doc.getElementById("nowLive").text(rmResumeBasiVo.getNowLive());
doc.getElementById("mobilePhone").text(rmResumeBasiVo.getMobilePhone());
doc.getElementById("email").text(rmResumeBasiVo.getEmail());

//插入意向行业信息
if (null!=rmResumeIntentionVo){
doc.getElementById("industry").text(rmResumeIntentionVo.getIndustry());
doc.getElementById("post").text(rmResumeIntentionVo.getPost());
doc.getElementById("region").text(rmResumeIntentionVo.getRegion());
doc.getElementById("salary").text(rmResumeIntentionVo.getSalary().toString());
String housing = rmResumeIntentionVo.getHousing()==0?"不提供住宿":"提供住宿";
String arrivalTime = rmResumeIntentionVo.getArrivalTime()==0?"随时上岗":"电话通知";
doc.getElementById("housing").text(housing);
doc.getElementById("arrivalTime").text(arrivalTime);
}else {
doc.getElementById("job_intension").attr("hidden","hidden");
}
//插入教育背景信息
if (null!=rmResumeEducationVo){
doc.getElementById("graduateTime").text(new SimpleDateFormat("yyyy.MM.dd").format(rmResumeEducationVo.getGraduateTime()));
doc.getElementById("school").text(rmResumeEducationVo.getSchool());
String edu = "暂无";
if (rmResumeEducationVo.getEducation()=="0"){
edu = "大专以下";
}else if (rmResumeEducationVo.getEducation()=="1"){
edu = "大专";
}else if (rmResumeEducationVo.getEducation()=="2"){
edu = "本科";
}else if (rmResumeEducationVo.getEducation()=="3"){
edu = "硕士";
}else if (rmResumeEducationVo.getEducation()=="4"){
edu = "博士";
}
doc.getElementById("education").text(edu);
doc.getElementById("describes").text(rmResumeEducationVo.getDescribes());
}else {
doc.getElementById("educational_background").attr("hidden","hidden");
}
//插入工作经验信息
if (jobVos.size()>0){
for (RmResumeJobVo lis:jobVos){
String htm = " <dd class=\"clearfix resume_append_area\">\n" +
"                        <div class=\"conTitle\">\n" +
"                            在岗时间:\n" +
"                            <i contenteditable=\"true\" class=\"resume_time\">"+new SimpleDateFormat("yyyy.MM.dd").format(lis.getBeginTime())+"</i> 至\n" +
"                            <i contenteditable=\"true\" class=\"resume_time\">"+new SimpleDateFormat("yyyy.MM.dd").format(lis.getEndTime())+"</i>\n" +
"                              公司名称:\n" +
"                            <i contenteditable=\"true\" class=\"resume_unit\">"+lis.getEnterpriseName()+"</i>\n" +
"                               职位:\n" +
"                            <i contenteditable=\"true\" class=\"resume_job\">"+lis.getIndustry()+"</i>\n" +
"                        </div>\n" +
"                        <div >\n" +
"                            工作描述: \n" +
"                            <i class=\"resume_value\">"+lis.getJopDescribes()+"</i>\n" +
"                        </div>\n" +
"                    </dd>";
doc.getElementById("work_experiences").append(htm);
}

}else {
doc.getElementById("work_experience").attr("hidden","hidden");
}

ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(doc.html().toString().getBytes());
OutputStream os=response.getOutputStream();
byte[] b=new byte[1024];
int length;
while((length=byteArrayInputStream.read(b))>0){
os.write(b,0,length);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}

}


这是本人自己整合的请多指教
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java html base64
相关文章推荐