123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package com.yaoyicloud.render;
- import java.io.ByteArrayInputStream;
- import java.io.IOException;
- import java.util.Map;
- import com.deepoove.poi.XWPFTemplate;
- import com.deepoove.poi.config.Configure;
- import com.deepoove.poi.config.ConfigureBuilder;
- import com.fasterxml.jackson.core.type.TypeReference;
- import com.fasterxml.jackson.databind.ObjectMapper;
- /**
- * 抽象渲染器
- *
- */
- public abstract class AbstractRender {
- /*
- * 导出文件位置
- */
- protected final String cwd;
- /*
- * Docx结果文件路径
- */
- protected String docxResultPath;
- /*
- * html结果文件路径
- */
- protected String htmlResultPath;
- /*
- * pdf结果文件路径
- */
- protected String pdfResultPath;
- public AbstractRender(String cwd) {
- this.cwd = cwd;
- }
- /**
- * Docx 渲染
- *
- * @param info 数据
- * @param templateFileContent 模板内容
- * @return 本地文件目录
- * @throws IOException
- */
- public final String renderDocx(String jsonStr, byte[] templateFileContent, String outputPath) throws IOException {
- // 注: 报告模板的模板变量按照json序列化的结果命名
- ObjectMapper objectMapper = new ObjectMapper();
- Map<String, Object> data = objectMapper.readValue(jsonStr, new TypeReference<Map<String, Object>>() {});
- ConfigureBuilder builder = Configure.builder();
- Configure config = builder.build();
- XWPFTemplate template =
- XWPFTemplate.compile(new ByteArrayInputStream(templateFileContent), config).render(data);
- template.writeToFile(outputPath);
- template.close();
- this.docxResultPath = outputPath;
- return this.docxResultPath;
- }
- /**
- * docx转换为pdf
- *
- * @return 本地文件目录
- * @throws IOException
- */
- public final String fromDocxToPdf() throws IOException {
- // 转换 docxResultPath 为 html
- // 加工html
- // 把 html 文件转成 pdf
- fromDocxToHtml();
- this.pdfResultPath = fromHtmlToPdf();
- return this.pdfResultPath;
- }
- /**
- * docx转换为Html
- *
- * @return 本地文件目录
- * @throws IOException
- */
- public final String fromDocxToHtml() throws IOException {
- // 转换 docxResultPath 为 html
- // 加工html
- this.htmlResultPath = cwd + "/1.html";
- return this.htmlResultPath;
- }
- /**
- * html转换为pdf
- *
- * @return 本地文件目录
- * @throws IOException
- */
- public final String fromHtmlToPdf() throws IOException {
- // 转换 htmlResultPath 为 pdf
- this.pdfResultPath = cwd + "/1.pdf";
- return this.pdfResultPath;
- }
- }
|