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

";
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");
}
}