/**
* 替換並生成word, 解決小方塊問題
*
* @param templet
* 模板路徑
* @param dataMap
* 替換數據
* @param filePath
* 替換後文件路徑
*/
public static void replace2NewWord2(String templet, Map<String, Object> dataMap, String filePath) {
// 讀取模板,進行渲染
XWPFTemplate doc = XWPFTemplate.create(templet);
FileOutputStream out = null;
try {
RenderAPI.render(doc, dataMap);
List<XWPFParagraph> p = doc.getXWPFDocument().getParagraphs();
Iterator<XWPFParagraph> it = p.iterator();
while(it.hasNext()){
List<XWPFRun> runs = it.next().getRuns();
Iterator<XWPFRun> itr = runs.iterator();
while(itr.hasNext()){
XWPFRun run = itr.next();
CTRPr rpr = run.getCTR().isSetRPr() ? run.getCTR().getRPr() : run.getCTR().addNewRPr();
CTFonts fonts = rpr.isSetRFonts() ? rpr.getRFonts() : rpr.addNewRFonts();
fonts.setAscii("Meiryo");
fonts.setEastAsia("Meiryo");
fonts.setHAnsi("Meiryo");
}
}
// 輸出渲染後的文件
out = new FileOutputStream(filePath);
doc.write(out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
使用的jar包爲fontbox-1.8.16.jar, pdfbox-app-1.8.16.jar, 以及apache POI