一.aspose.word工具有着强大的功能
1、能够把HTML中的图片提取并插入Word文档中
2、比较完好的保留了HTML的中格式。
3、可以加载css样式,保留html原有的ccs样式
4、当前工具是商业软件,收费软件
代码:
注意:1、主要的方法都来源于apache提供的方法
2、使用临时文件目的,不想保留生成的Word文档(可以根据各自的需求,做相关处理)
3、使用aspose.word的jar:aspose-words-14.9.0-jdk16
//拼接完整的HTML文档
String html="<!DOCTYPE html><html><head></head><body><h2 style=\"text-align: center;\">"+title+"</h2>" + body + "</body></html>";
//Word文档输出流
OutputStream outputStream1=null;
//下载输出流
OutputStream outputStream=null;
//下载输入流
InputStream inputStream=null;
try {
//创建临时文件
File htmlFile = File.createTempFile(articleId, ".doc");
//aspose-words生成Word文档
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.insertHtml(html);
outputStream1=new FileOutputStream(htmlFile);
doc.save(outputStream1, SaveOptions.createSaveOptions(SaveFormat.DOC));//生成doc文件
//生成Word文档之后,关闭输入流
outputStream1.close();
//文件下载
response.reset();
response.setContentType("application/msword");
response.setCharacterEncoding("UTF-8");
fileName=new String(fileName.getBytes("UTF-8"));
response.addHeader("Content-Disposition","attachment;filename=\""+fileName+"\"");
outputStream=response.getOutputStream();
//输出文件
inputStream=new FileInputStream(htmlFile);
IOUtils.copy(inputStream,outputStream);
//关闭流
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
//关闭程序时,删除临时文件
htmlFile.delete();
}catch (Exception e){
e.printStackTrace();
}finally {
//关闭所有的流
try {
if (outputStream1!=null){
outputStream1.close();
}
if (outputStream!=null){
outputStream.close();
}
if (inputStream!=null){
inputStream.close();
}
}catch (IOException e1){
e1.printStackTrace();
}
}