差以毫厘,谬以千里。——班固《汉书》
使用的组件还是Spire.Doc
,可以看我这篇博客
如果我们遇到html
,需要直接渲染到word
或者pdf
上,可以使用官方文档给的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import com.spire.doc.*; import java.io.*;
public class htmlStringToWord {
public static void main(String[] args) throws Exception {
String inputHtml = "InputHtml.txt"; Document document = new Document(); Section sec = document.addSection();
String htmlText = readTextFromFile(inputHtml); sec.addParagraph().appendHTML(htmlText);
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(); } }
|
但如果我们想使用替换书签的方式去做,那就需要自己写了,官网是没有找到这个东西的
我这里写的函数可以实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
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); } }
|