使用springboot和freemarker导出word带图片

 

1.首先,要有一个模板word文件(.doc)  里面的样式要先调整好,需要放图片的地方加一个图片 占位  文字内容也要加一些内容占位

2.然后把word转成.ftl格式文件  很贱单  先把word文件另存为.xml(word2003xml)  再把文件后缀由xml改为ftl

3.把ftl中之前弄得占位符搞成变量名 比如说    姓名:周某人  改为  姓名:${name}

4.controller获取信息填充进ftl

    @ApiOperation(value = "导出个人简历", notes = "导出个人简历")
    @RequestMapping(value = "export", method = RequestMethod.GET)
    public void downloadWord(HttpServletRequest request, HttpServletResponse response, @RequestParam Long studentId) throws Exception {
        try {
            RestResult<ResumeDetaliResponse> result = resumeService.queryByPrimaryKey(studentId);
            ResumeDetaliResponse data = result.getData();
            if (null == data) {
                throw new Exception("导出出错!");
            }
            // 告诉浏览器用什么软件可以打开此文件
            response.setHeader("content-Type", "application/msword");
            // 下载文件的默认名称
            response.setHeader("Content-Disposition", "attachment;filename=默认简历.doc");
            Map<String, Object> dataMap = this.getData(data);
            //创建配置实例对象
            Configuration configuration = new Configuration();
            //设置编码
            configuration.setDefaultEncoding("UTF-8");
            //加载需要装填的模板
            configuration.setClassForTemplateLoading(this.getClass(), "/");
            //设置对象包装器
            configuration.setObjectWrapper(new DefaultObjectWrapper());
            //设置异常处理器
            configuration.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
            //获取ftl模板对象
            Template template = configuration.getTemplate("11111.ftl");
            //输出文档
            StringBuilder fileName = new StringBuilder("");
            if (StringUtils.isNotEmpty(data.getStudentName())) {
                fileName.append(data.getStudentName()).append("的简历").append(".doc");
            } else {
                fileName.append("默认简历").append(".doc");
            }


            try {
                response.setContentType("application/octet-stream");
                response.setHeader("Content-Disposition", "attachment;filename="
                        + new String(fileName.toString().getBytes("GBK"), "ISO-8859-1"));
                response.setCharacterEncoding("utf-8");//处理乱码问题
                //生成Word文档
                template.process(dataMap, response.getWriter());
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                response.flushBuffer();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private Map<String, Object> getData(ResumeDetaliResponse data) {
        Map<String, Object> dataMap = new HashMap<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        //头像数据
        if (StringUtils.isNotEmpty(data.getHeadImg())) {
            //url图片转base64
            try {
                String s = Base64URL.encodeImageToBase64(new URL(data.getHeadImg()));
                dataMap.put("TP", s);
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            //默认简历头像
            dataMap.put("TP", "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");
        }
        //表格数据
        List<Map<String, Object>> works = new ArrayList<>();
        List<WorkExperience> workList = data.getWorkExperienceList();
        List<ProjectExperience> projectList = data.getProjectExperiences();
        List<EducationExperience> educationList = data.getEducationExperienceList();
        List<TrainExperience> trainList = data.getTrainExperiences();
        List<LanguageAbility> languageList = data.getLanguageAbilities();
        List<MajorSkill> skillList = data.getMajorSkills();
        List<Certificates> certiList = data.getCertificates();
        if (workList != null && workList.size() > 0) {
            for (WorkExperience workExperience : workList) {
                Map<String, Object> workMap = new HashMap<>();
                workMap.put("startTime", DateUtils.convert(workExperience.getStartTime(), DateUtils.DATE_FORMAT));
                workMap.put("endTime", DateUtils.convert(workExperience.getEndTime(), DateUtils.DATE_FORMAT));
                workMap.put("companyName", workExperience.getCompanyName());
                workMap.put("position", workExperience.getPosition());
                workMap.put("monthSalary", workExperience.getMonthSalary());
                workMap.put("industry", workExperience.getIndustry());
                workMap.put("jobIntention", workExperience.getJobIntention());
                works.add(workMap);
            }

        }
        //项目经历数据
        List<Map<String, Object>> projects = new ArrayList<>();
        if (projectList != null && projectList.size() > 0) {
            for (ProjectExperience project : projectList) {
                Map<String, Object> projectMap = new HashMap<>();
                projectMap.put("startTime", DateUtils.convert(project.getStartTime(), DateUtils.DATE_FORMAT));
                projectMap.put("endTime", DateUtils.convert(project.getEndTime(), DateUtils.DATE_FORMAT));
                projectMap.put("name", project.getName());
                projectMap.put("projectDesc", project.getProjectDesc());
                projectMap.put("personalDuty", project.getPersonalDuty());
                projects.add(projectMap);
            }
        }
        //教育经历数据
        List<Map<String, Object>> educations = new ArrayList<>();
        if (educationList != null && educationList.size() > 0) {
            for (EducationExperience education : educationList) {
                Map<String, Object> educationMap = new HashMap<>();
                educationMap.put("startTime", DateUtils.convert(education.getStartTime(), DateUtils.DATE_FORMAT));
                educationMap.put("endTime", DateUtils.convert(education.getEndTime(), DateUtils.DATE_FORMAT));
                educationMap.put("schoolName", education.getSchoolName());
                educationMap.put("major", education.getMajor());
                educationMap.put("education", education.getEducation());
                educations.add(educationMap);
            }
        }
        //培训经历数据
        List<Map<String, Object>> trains = new ArrayList<>();
        if (trainList != null && trainList.size() > 0) {
            for (TrainExperience train : trainList) {
                Map<String, Object> trainMap = new HashMap<>();
                trainMap.put("startTime", DateUtils.convert(train.getStartTime(), DateUtils.DATE_FORMAT));
                trainMap.put("endTime", DateUtils.convert(train.getEndTime(), DateUtils.DATE_FORMAT));
                trainMap.put("trainName", train.getTrainName());
                trains.add(trainMap);
            }
        }
        //语言数据
        List<Map<String, Object>> languages = new ArrayList<>();
        if (languageList != null && languageList.size() > 0) {
            for (LanguageAbility language : languageList) {
                Map<String, Object> languageMap = new HashMap<>();
                languageMap.put("language", getLanguage(language.getLanguage().intValue()));
                languageMap.put("lreadWriteAbility", getAbility(language.getLreadWriteAbility().intValue()));
                languageMap.put("hearAbility", getAbility(language.getHearAbility().intValue()));
                languages.add(languageMap);
            }
        }
        //专业技能数据
        List<Map<String, Object>> skills = new ArrayList<>();
        if (skillList != null && skillList.size() > 0) {
            for (MajorSkill skill : skillList) {
                Map<String, Object> skillMap = new HashMap<>();
                skillMap.put("skillName", skill.getSkillName());
                skillMap.put("masterAbility", skill.getMasterAbility());//使用时长月份
                skills.add(skillMap);
            }
        }
        //证书数据
        List<Map<String, Object>> certificates = new ArrayList<>();
        if (certiList != null && certiList.size() > 0) {
            for (Certificates certi : certiList) {
                Map<String, Object> certificateMap = new HashMap<>();
                certificateMap.put("name", certi.getCertificateName());
                certificateMap.put("reciveTime", DateUtils.convert(certi.getReciveTime(), DateUtils.DATE_FORMAT));
                certificates.add(certificateMap);
            }
        }
        //求职意向
        JobIntention info = data.getJobIntentionInfo();
        dataMap.put("works", works);
        dataMap.put("linkPhone", data.getLinkPhone());
        dataMap.put("email", data.getEmail());
        dataMap.put("projects", projects);
        dataMap.put("educations", educations);
        dataMap.put("trains", trains);
        dataMap.put("languages", languages);
        dataMap.put("skills", skills);
        dataMap.put("certificates", certificates);
        dataMap.put("studentName", data.getStudentName());
        dataMap.put("sex", data.getSex() == "0" ? "男" : "女");
        dataMap.put("age", data.getAge());
        dataMap.put("workYears", data.getWorkYears());
        dataMap.put("levelName", getLevel(data.getLevel()));
        dataMap.put("nowAd", data.getNowAdPriv());
        dataMap.put("nowAdCity", data.getNowAdCity());
        dataMap.put("regisAdPriv", data.getRegisAdPriv());
        dataMap.put("regisAdCity", data.getRegisAdCity());

        dataMap.put("timeFram", "2018-2019");
        dataMap.put("hopeIndustry", "互联网");
        if (info != null) {
            dataMap.put("hopePosition", info.getHopePosition());
            dataMap.put("hopeAddArea", info.getHopeAddPriv() + info.getHopeAddCity() + info.getHopeAddArea());
            dataMap.put("monthlSalaryBeforeTax", info.getMonthlSalaryBeforeTax());
        }else {
            dataMap.put("hopePosition", "暂无");
            dataMap.put("hopeAddArea", "暂无");
            dataMap.put("monthlSalaryBeforeTax", "暂无");
        }
        dataMap.put("selfIntroduction", data.getSelfIntroduction());
        return dataMap;
    }

 

然后请求接口可以导出word

 

仅做记录 自己看的

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Freemarker可以通过使用Apache POI库来导出图片Word文档。首先,需要在模板中定义一个图片占位符,然后在Java代码中将图片插入到占位符中。具体步骤如下: 1. 在Word模板中定义一个图片占位符,例如:${image}。 2. 在Java代码中,使用Apache POI库加载模板文件,并获取到模板中的图片占位符。 3. 使用POI的XWPFRun类创建一个新的段落,并将图片插入到段落中。 4. 将段落插入到模板中的图片占位符位置。 5. 保存生成的Word文档。 示例代码如下: ``` // 加载模板文件 FileInputStream fis = new FileInputStream("template.docx"); XWPFDocument doc = new XWPFDocument(fis); // 获取图片占位符 XWPFParagraph imagePlaceholder = doc.getParagraphs().stream() .filter(p -> p.getText().contains("${image}")) .findFirst().orElse(null); // 创建新的段落 XWPFParagraph newParagraph = doc.createParagraph(); // 插入图片到段落中 XWPFRun newRun = newParagraph.createRun(); newRun.addPicture(new FileInputStream("image.jpg"), XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(200), Units.toEMU(200)); // 将段落插入到图片占位符位置 int index = doc.getPosOfParagraph(imagePlaceholder); doc.removeBodyElement(index); doc.setParagraph(newParagraph, index); // 保存生成的Word文档 FileOutputStream fos = new FileOutputStream("output.docx"); doc.write(fos); fos.close(); ``` 注意:在使用POI插入图片时,需要指定图片的类型和大小。示例代码中使用图片类型为JPEG,大小为200x200像素。 ### 回答2: Freemarker是一种模板引擎,可以将数据和模板结合生成静态文本,并且常见在Spring框架中使用。而导出Word图片,一般需要通过POI或者Apache POI来实现,具体步骤如下: 1.首先需要引入POI和Freemarker的jar包。 2.在模板中添加图片的占位符,例如${logo}。 3.通过Java代码将图片读入到输出流中,然后在模板中替换${logo}的内容为图片字节数组的Base64编码。 4.通过Freemarker将数据和模板结合,生成Word文件。 5.最后需要使用POI将Word文件的后缀名由.ftl改为.doc或.docx,并且编写下载逻辑进行下载。 需要注意的是,在将图片插入Word文档时,可能出现图片比例失调或者无法插入图片的情况,这时需要调整插入图片的方式,可以将图片插入一个模板中,然后将模板插入到Word文档中,以保证插入的图片比例正确。 ### 回答3: FreeMarker是一种Java模板引擎,它允许使用模板生成文本输出,其中包括MS Word文档。在导出word图片时,需要使用FreeMarker的JDBC模式来检索数据和图片,然后将它们插入Word文档中。以下是导出Word图片的步骤: 1.准备Word模板:首先需要创建一个Word模板,包含需要添加文本的区域和占位符来插入图片。这可以通过在Word中创建一个新文档,添加文本和占位符,然后保存为docx文件来完成。 2.准备模板数据:使用Java代码从数据库中检索需要导出的数据和图片,并将它们作为数据模型引入FreeMarker模板引擎中。 3.将数据模型应用于模板:使用FreeMarker模板引擎将数据模型应用于Word模板中,并生成将要输出的Word文档。 4.插入图片:通过在FreeMarker模板中使用图片占位符,将图片插入到生成的Word文档中。这可以通过将图片从数据库中检索出来并使用二进制方式插入模板中来完成。 5.保存Word文档:完成所有文本和图片的插入后,将生成的Word文档保存到文件系统或输出流中即可。 在使用FreeMarker导出Word图片时,需要注意以下几点: 1.在Word模板中应该包含正确的占位符并设置样式和布局。 2.从数据库中检索图片时应该压缩和缩放图片以确保它们适合文档中的区域。 3.在插入图片时,正确处理可能出现的图片格式和分辨率问题。 4.应对可能出现的异常情况进行处理,以确保生成的Word文档具有良好的稳定性和可靠性。 总之,使用FreeMarker导出Word图片是一项需要谨慎处理的复杂任务。通过遵循以上步骤和注意事项,可以生成具有高质量和稳健性的Word文档并满足客户的需求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值