此功能需要在spring boot环境
一、引入依赖
详情请查看:https://blog.csdn.net/weixin_45061924/article/details/128251786
二、实现
2.1 设置测试文档
在word文档中复选框一般出现在表格中,因此设置如下测试文档:
在文档中使用Symbol用于占位,在生成新文档时用相应的复选框替换占位符即可。
2.2 代码实现
public void TextDrawCombox(){
Document doc = new Document();
//读取文档
doc.loadFromFile("D:\\桌面\\text.docx", FileFormat.Docx);
//获取第一个section
Section section = doc.getSections().get(0);
//获取第一个表格
ITable table = section.getTables().get(0);
// 获取行
TableRow tableRow = table.getRows().get(0);
//获取单元格
TableCell cell = tableRow.getCells().get(0);
//获取段落
Paragraph para = cell.getParagraphs().get(0);
//设置段落中字体样式
ParagraphStyle style= new ParagraphStyle(doc);
style.setName("paraStyle");
style.getCharacterFormat().setFontName("宋体");
style.getCharacterFormat().setFontSize(11f);
doc.getStyles().add(style);
para.applyStyle("paraStyle");
String symbol;
//复选框打勾
symbol= "Symbol1";
TextSelection selection1 = doc.findString(symbol,true,true);
TextRange tr1 = selection1.getAsOneRange();
tr1.getCharacterFormat().setFontName("Wingdings 2");
//除了16进制,也可以用10进制来表示这个符号,复选框打勾是82
doc.replace(selection1.getSelectedText(), "\u0052", true, true);
//复选框打叉
symbol = "Symbol2";
TextSelection selection2 = doc.findString(symbol,true,true);
TextRange tr2 = selection2.getAsOneRange();
tr2.getCharacterFormat().setFontName("Wingdings 2");
//16进制复选框打叉是0053,10进制是83
doc.replace(selection2.getSelectedText(), "\u0053", true, true);
//复选框不勾选
symbol = "Symbol3";
TextSelection selection3 = doc.findString(symbol, true, true);
TextRange tr3 = selection3.getAsOneRange();
tr3.getCharacterFormat().setFontName("Wingdings 2");
//16进制复选框不勾选是00A3,10进制是163
doc.replace(selection3.getSelectedText(), "\u00A3", true, true);
//输出文档
doc.saveToFile("D:\\桌面\\text(1).doc", FileFormat.Docx);
}