package com.github.izhangzhihao.OfficeProducer;

import lombok.Cleanup;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

/**
 * 创建、操作Doc的一系列方法
 */
@SuppressWarnings({"JavaDoc", "WeakerAccess"})
public class DocProducer {

    /**
     * 创建Doc并保存
     *
     * @param templatePath 模板doc路径
     * @param parameters   参数和值
     *                     //* @param imageParameters 书签和图片
     * @param savePath     保存doc的路径
     * @return
     */
    public static void CreateDocFromTemplate(String templatePath,
                                             HashMap<String, String> parameters,
                                             //HashMap<String, String> imageParameters,
                                             String savePath)
            throws Exception {
        @Cleanup InputStream is = DocProducer.class.getResourceAsStream(templatePath);
        HWPFDocument doc = new HWPFDocument(is);
        Range range = doc.getRange();

        //把range范围内的${}替换
        for (Map.Entry<String, String> next : parameters.entrySet()) {
            range.replaceText("${" + next.getKey() + "}",
                    next.getValue()
            );
        }

        @Cleanup OutputStream os = new FileOutputStream(savePath);
        //把doc输出到输出流中
        doc.write(os);
    }
}