java根据word模板生成word,并转pdf

java根据word模板生成word,并转pdf

  • 思路:
    • 代码

思路:

代码替换word变量生成新的word,再将生成的word转成pdf

java根据word模板生成word,并转pdf_第1张图片
java根据word模板生成word,并转pdf_第2张图片

代码

    String fileType = "pdf.jpg";
        //显示图标
        File thumbnail = ResourceUtils.getFile("classpath:static" + File.separator + "images" + File.separator + fileType);
        byte[] data = ImageUtil.getFilesByteArray(thumbnail);
        ImageUtil.saveFiles(filepath + "_.jpg", data);


        for (int i = 0; i < electronicRequests.getItems().size(); i++) {
            String LINE_DESC = electronicRequests.getItems().get(i).getLINE_DESC();
            String CF_ACCOUNT_DESC = electronicRequests.getItems().get(i).getCF_ACCOUNT_DESC();
            String CF_ACCOUNT_VALUE = electronicRequests.getItems().get(i).getCF_ACCOUNT_VALUE();
            String KM = CF_ACCOUNT_DESC +"\r"+ CF_ACCOUNT_VALUE;
            String ENTERED_DR = electronicRequests.getItems().get(i).getENTERED_DR();
            if(ENTERED_DR.equals(".00")){
                ENTERED_DR="0.00";
            }
            String ACCOUNTED_DR = electronicRequests.getItems().get(i).getACCOUNTED_DR();
            if(ACCOUNTED_DR.equals(".00")){
                ACCOUNTED_DR="0.00";
            }
            String ENTERED_CR = electronicRequests.getItems().get(i).getENTERED_CR();
            if(ENTERED_CR.equals(".00")){
                ENTERED_CR="0.00";
            }
            String ACCOUNTED_CR = electronicRequests.getItems().get(i).getACCOUNTED_CR();
            if(ACCOUNTED_CR.equals(".00")){
                ACCOUNTED_CR="0.00";
            }
            //借方在上 贷方在下
            if(!ENTERED_DR.equals("") || !ACCOUNTED_DR.equals("")){
                JList.add(new String[]{LINE_DESC, KM, ENTERED_DR, ACCOUNTED_DR, ENTERED_CR, ACCOUNTED_CR});
            }else{
                DList.add(new String[]{LINE_DESC, KM, ENTERED_DR, ACCOUNTED_DR, ENTERED_CR, ACCOUNTED_CR});
            }



	       if(JList.size() == 0){
	                 word = WorderToNewWordUtils.changWord(inputUrl, outpath, testMap, JList,DList);
	            }else{
	
	               word = WorderToNewWordUtils.changWord(inputUrltwo, outpath, testMap, JList,DList);
	            }
	
	
	            if (word) {
	                //生成pdf
	                Doc2Pdf.doc2pdf(outpath, filepath + "_PDF");
	            }

工具类:

import org.apache.poi.POIXMLDocument;
import org.apache.poi.xwpf.usermodel.*;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

/**
 * 通过word模板生成新的word工具类
 *
 * @author zhiheng
 */
public class WorderToNewWordUtils {
   

    /**
     * 根据模板生成新word文档
     * 判断表格是需要替换还是需要插入,判断逻辑有$为替换,表格无$为插入
     *
     * @param inputUrl  模板存放地址
     * @param textMap   需要替换的信息集合
     * @param JList 需要插入的表格信息集合
     * @return 成功返回true, 失败返回false
     */
    public static boolean changWord(String inputUrl, String outputUrl,
                                    Map<String, String> textMap, List<String[]> JList,List<String[]> DList) {
   

        //模板转换默认成功
        boolean changeFlag = true;
        try {
   
            //获取docx解析对象
            XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage(inputUrl));
            //解析替换文本段落对象
            WorderToNewWordUtils.changeText(document, textMap);
            //解析替换表格对象
            WorderToNewWordUtils.changeTable(document, textMap, JList,DList);

            //生成新的word
            File file = new File(outputUrl);
            FileOutputStream stream = new FileOutputStream(file);
            document.write(stream);
            stream.close();

        } catch (IOException e) {
   
            e.printStackTrace();
            changeFlag = false;
        }

        return changeFlag;

    }

    /**
     * 替换段落文本
     *
     * @param document docx解析对象
     * @param textMap  需要替换的信息集合
     */
    public static void changeText(XWPFDocument document, Map&l

你可能感兴趣的:(java,java)