pdf文档转word文档

1.将pdf文档转换成txt文档

public static String getTextFromPdf(String filename) throws Exception { 
    String content = null;
    PDDocument pdfdocument = null; 
    RandomAccessRead is = new RandomAccessBufferedFileInputStream(filename); 
    PDFParser parser = new PDFParser(is);     
    parser.parse();       
    pdfdocument = parser.getPDDocument(); 
    PDFTextStripper stripper = new PDFTextStripper();
    content = stripper.getText(pdfdocument); 
    return content; 
} 

2.提取相应的pdf数据信息并封装至map集合(略)
注意:map中key需要根据模板文档中的关键词决定(模板举例如下)
这里写图片描述
map.put(“sub”,value);
map.put(“school”,value);
……

注意:
①将word文档编辑好之后保存为 .xml格式(比如文件名为template)
②保存好后,将template.xml文件后缀改为 .ftl(template.ftl)
③将template.ftl文件放入工程中(本人放置如下)
这里写图片描述
此处放置关系到3步骤,请注意

3.通过模板和数据生成word文档

    /**
     * 
     * @param map   提取数据
     * @param request
     */
    public static void convert(Map<String, Object> map, HttpServletRequest request) {
        //这里如果放在了具体的包名下,需要修改为 "/com/test/template/"
        Freemark freemark = new Freemark("/template", request);
        freemark.setTemplateName("template.ftl");
        freemark.setFileName("doc_"+new SimpleDateFormat("yyyy-MM-dd hh-mm-ss").format(new Date())+".doc");//生成的word名称
        freemark.setFilePath("F:/a/doc/");//生成word存储路径
        freemark.createWord(map);//生成方法
    }

Freemark类

package com.dyly.mng.modules.pdfandword.wordutils;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class Freemark {

    /**
     * freemark模板配置
     */
    private Configuration configuration;
    /**
     * freemark模板的名字
     */
    private String templateName;
    /**
     * 生成文件名
     */
    private String fileName;
    /**
     * 生成文件路径
     */
    private String filePath;

    public Freemark(String templatePath, HttpServletRequest request) {
        configuration = new Configuration();
        configuration.setDefaultEncoding("utf-8");
        configuration.setClassForTemplateLoading(this.getClass(),templatePath); 
        configuration.setServletContextForTemplateLoading(request.getSession().getServletContext(), "/template");
    }   

    public void createWord(Map<String, Object> map){

        Template t = null;
        try {
            t = configuration.getTemplate(templateName);
        } catch (IOException e) {
            e.printStackTrace();
        }

        File outFile = new File(filePath+fileName);
        Writer out = null;
        try {
            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        try {
            t.process(map, out);
            out.close();
        } catch (TemplateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public String getFilePath() {
        return filePath;
    }

    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }

    public String getTemplateName() {
        return templateName;
    }

    public void setTemplateName(String templateName) {
        this.templateName = templateName;
    }
}

4.根据请求就可以直接转换了,具体word文件位置可自行修改。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ypl603330811/article/details/79957877
文章标签: pdf转word
个人分类: java工具类
上一篇自定义注解 登录拦截
下一篇springcloud 解决微服务之间token传递问题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭