| | |
| | | import freemarker.template.Template; |
| | | import freemarker.template.TemplateException; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import org.apache.poi.openxml4j.exceptions.InvalidFormatException; |
| | | import org.apache.poi.util.Units; |
| | | import org.apache.poi.xwpf.usermodel.*; |
| | | import org.springframework.mock.web.MockMultipartFile; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.*; |
| | | import java.net.URLEncoder; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.io.BufferedWriter; |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileNotFoundException; |
| | | import java.io.FileOutputStream; |
| | | import java.io.FileWriter; |
| | | import java.io.IOException; |
| | | import java.io.Writer; |
| | | import java.util.*; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | |
| | | System.setProperty("file.encoding", "UTF-8"); |
| | | |
| | | XWPFDocument document = new XWPFDocument(fis); |
| | | |
| | | XWPFParagraph pic = document.createParagraph(); |
| | | XWPFRun picRun = pic.createRun(); |
| | | Map<String, Object> dataMap1 = new HashMap<>(); |
| | | // dataMap.put("${picture}", picRun.addPicture( |
| | | // new FileInputStream("/usr/local/project/file/1.jpg"), XWPFDocument.PICTURE_TYPE_JPEG, |
| | | // "/usr/local/project/file/1.jpg", |
| | | // Units.toEMU(60), |
| | | // Units.toEMU(30) |
| | | // )); |
| | | // 处理段落 |
| | | for (XWPFParagraph paragraph : document.getParagraphs()) { |
| | | replaceParagraph(paragraph, dataMap); |
| | | replaceParagraph1(paragraph); |
| | | } |
| | | |
| | | // 处理表格 |
| | |
| | | replaceRunRange(paragraph, info); |
| | | } |
| | | } |
| | | private static void replaceParagraph1(XWPFParagraph paragraph) throws IOException, InvalidFormatException { |
| | | List<XWPFRun> runs = paragraph.getRuns(); |
| | | for (XWPFRun r : runs) { |
| | | String text = r.getText(0); |
| | | if (text != null && text.contains("{{image}}")) { |
| | | r.setText("", 0); |
| | | FileInputStream is = new FileInputStream("/usr/local/project/file/1.jpg"); |
| | | r.addBreak(); |
| | | r.addPicture(is, XWPFDocument.PICTURE_TYPE_JPEG, "/usr/local/project/file/1.jpg", Units.toEMU(60), Units.toEMU(30)); |
| | | is.close(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private static String processPlaceholder(String text, Map<String, Object> dataMap) { |
| | | // 处理括号内的占位符 |