package com.example.demo; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.data.*; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.util.List; public class Test { public static void main(String[] args) throws Exception { String text = "

昌平生命科学园,6号楼,402,测试测试0829         0829测试额测测测而出

13131321231231,aaaaabbbb?????   898989898

\"测试供货商_GHS00001_logo.png\"

"; Document document = Jsoup.parse(text); Documents.DocumentBuilder of = Documents.of(); Elements links = document.getElementsByTag("p"); for (Element link : links) { Elements p = link.select("p"); Elements img = link.select("img"); String src = img.attr("src"); if(StringUtils.isNotBlank( src ) && src.contains("data:image/png;base64,") ){ // 处理图片 of.addParagraph(Paragraphs.of(Pictures.ofBase64(src, PictureType.PNG).create()).create()); }else { // 处理 文本 of.addParagraph( Paragraphs.of(p.text()).create() ); } } DocumentRenderData data = of.create(); XWPFTemplate template = XWPFTemplate.create(data); List paragraphs = template.getXWPFDocument().getParagraphs(); // 遍历所有段落 for (XWPFParagraph paragraph : paragraphs) { paragraph.setSpacingBetween(1.5); // 获取段落中的所有"Run" List runs = paragraph.getRuns(); for (XWPFRun run : runs) { // 设置字体大小(以半点为单位,所以 28 对应 14pt) run.setFontSize(12); run.setBold(true); run.setFontFamily("宋体"); } } template.writeToFile(GetWebProjectRealPathTool.getRootPath()+"/111.docx"); } }