差以毫厘,谬以千里。——班固《汉书》
使用的组件还是Spire.Doc
,可以看我这篇博客
如果我们遇到html
,需要直接渲染到word
或者pdf
上,可以使用官方文档给的例子
import com.spire.doc.*; import java.io.*; public class htmlStringToWord { public static void main(String[] args) throws Exception { String inputHtml = "InputHtml.txt"; //新建Document对象 Document document = new Document(); //添加section Section sec = document.addSection(); String htmlText = readTextFromFile(inputHtml); //添加段落并写入HTML文本 sec.addParagraph().appendHTML(htmlText); //文档另存为PDF document.saveToFile("HTMLstringToPDF.pdf", FileFormat.PDF); } public static String readTextFromFile(String fileName) throws IOException{ StringBuffer sb = new StringBuffer(); BufferedReader br = new BufferedReader(new FileReader(fileName)); String content = null; while ((content = br.readLine()) != null) { sb.append(content); } return sb.toString(); } }
但如果我们想使用替换书签的方式去做,那就需要自己写了,官网是没有找到这个东西的
我这里写的函数可以实现
/** * @MethodName: fillReplaceHtml * @Description: 填充替换掉html标签后的文本 * @Date: 2020/12/28 0028 15:02 * * * @author: <achao1441470436@gmail.com> * @param: [doc, bookmarkName, data] * @returnValue: void */ public static void fillReplaceHtml(Document doc, String bookmarkName, String data) { // 定位书签 BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(doc); bookmarkNavigator.moveToBookmark(bookmarkName); // 创建段落 Paragraph para = new Paragraph(doc); // 创建文本内容 TextRange textRange = para.appendText(StringUtils.replaceHtml(data)); // 设置格式 CharacterFormat format = textRange.getCharacterFormat(); // 大小 format.setFontSize(9); // 创建文本域 TextBodyPart bodyPart = new TextBodyPart(doc); // 添加段落到文本域 bodyPart.getBodyItems().add(para); // 替换书签内容 try { bookmarkNavigator.replaceBookmarkContent(bodyPart); } catch (Exception e) { log.error("书签《" + bookmarkName + "》丢失", e); } }