用Spire.Doc,可以轻松地将HTML插入到Word文档中。下面是一个示例代码:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.Section;
import com.spire.doc.documents.HorizontalAlignment;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.HtmlLayoutType;
import com.spire.doc.fields.TextRange;
import java.io.*;
public class HtmlToWord {
public static void main(String[] args) throws Exception {
//定义文档对象
Document doc = new Document();
//添加一个段落
Section section = doc.addSection();
TextRange tr = section.addParagraph().appendText("下面是插入HTML到Word的示例:");
tr.getCharacterFormat().setBold(true);
tr.getCharacterFormat().setFontSize(16f);
//定义HTML内容
String htmlContent = "<html><body><h1>Hello, World!</h1><p>This is an example of inserting HTML into a Word document using Spire.Doc.</p></body></html>";
//插入HTML到Word
DocPicture htmlPicture = section.addParagraph().appendPicture(
htmlContent.getBytes(), HtmlLayoutType.Inline);
htmlPicture.setHorizontalPosition(0);
htmlPicture.setVerticalPosition(30);
htmlPicture.setWidth(520);
htmlPicture.setHeight(520 * 9 / 16);
//设置段落格式
section.getParagraphFormat().setHorizontalAlignment(HorizontalAlignment.Center);
//保存为Word文档
doc.saveToFile("HtmlToWord.docx", FileFormat.Docx);
System.out.println("Word文档已生成。");
}
}
在上面的代码中,我们首先定义一个文档对象并添加一个段落。然后定义HTML内容,并使用 appendPicture 方法将HTML插入到Word文档中。 HtmlLayoutType 枚举类型可用于指定HTML的布局方式。最后,我们设置了段落格式并将文档保存为Word格式。在输出语句中,我们打印了一条消息以通知用户生成文档的完成。
必不少朋友都会碰到批量修改word文档内容、压缩文档图片、文件格式转换等重复性文档处理工作的需要,今天胖胖老师就推荐给大家一个免费工具XCLWinKits,一站搞定你所有的需要。
XCLWinKits是一个非常实用的文档处理工具合集,里面包含了许多常用的小功能。支持在电脑没有安装Office等软件的情况下,对Word文档、Excel文档、Pdf文档、HTML文档、Txt文档等内容的批量修改与替换;同时支持对所有文件的名称和扩展名的批量修改;支持对Word文档、Excel文档、Pdf文档、HTML文档、Txt文本文档的格式相互批量转换,也支持将图片批量转为Word/Pdf/Excel等格式,非常方便。
目前最新版本是2.1.0。安装包大小是54MB,支持win10。软件是绿色软件,无需安装,直接运行exe即可,win7需要安装vc2010++。
批量修改文件名:支持对所有文件的文件名批量修改,同时可以自定义多个修改规则。
批量修改文件内容:不需要安装Office/Pdf查看器等软件,支持对Word文档/Excel文档/Pdf文档/Txt文档的内容进行批量修改与替换,同时可以自定义多个修改规则。
批量修改文件扩展名:支持对所有文件的文件扩展名批量修改,同时可以自定义多个修改规则。
Word文档格式批量转换为doc、dot、docx、docm、dotx、dotm、xml、rtf、pdf、xps、xaml、swf、svg、html、ps、epub、odt、ott、txt、tiff、png、bmp、emf、jpg、gif等格式。
Excel文档批量转换为csv、xls、xlsx、xlsm、xltx、xltm、xlam、tsv、txt、html、pdf、ods、xml、xlsb、xps、tiff、svg、dif、numbers等格式。
Pdf文档批量转换为doc、xps、html、xml、tex、docx、svg、xlsx、epub、pptx等格式。
图片文件批量转换为Word/Excel/Pdf文档。
批量调整图片质量及图片尺寸大小。
文本文件批量转换为Word/Excel/Pdf文档。
正则表达式测试小工具:可以实时匹配,程序员必备。
字符串转js常量工具:对经常写js代码的人会有很大的帮助。
加密与解密:提供MD5的加密和其它方式的解密。
编码转换:提供常用的字符串编码转换功能。
日期时间差:一个小小的工具,可以计算指定的两个时间的间隔。
我的IP地址:显示当前电脑的内网及公网IP地址。
批量修改文件名称/批量修改文件内容/批量修改文件扩展名
无需打开文档进行批量内容替换
支持word文档转EPUB、图片格式。
支持excel转换pdf
支持pdf转换word、epub
支持图片批量修改和压缩
近有一个业务是前端要上传word格式的文稿,然后用户上传完之后,可以用浏览器直接查看该文稿,并且可以在富文本框直接引用该文稿,所以上传word文稿之后,后端保存到db的必须是html格式才行,所以涉及到word格式转html格式。
通过调查,这个word和html的处理,有两种方案,方案1是前端做这个转换。方案2是把word文档上传给后台,后台转换好之后再返回给前端。至于方案1,看到大家的反馈都说很多问题,所以就没采用前端转的方案,最终决定是后端转化为html格式并返回给前段预览,待客户预览的时候,确认格式没问题之后,再把html保存到后台(因为word涉及到的格式太多,比如图片,visio图,表格,图片等等之类的复杂元素,转html的时候,可能会很多格式问题,所以要有个预览的过程)。
对于word中普通的文字,问题倒不大,主要是文本之外的元素的处理,比如图片,视频,表格等。针对我本次的文章,只处理了图片,处理的方式是:后台从word中找出图片(当然引入的jar包已经带了获取word中图片的功能),上传到服务器,拿到绝对路径之后,放入到html里面,这样,返回给前端的html内容,就可以直接预览了。
maven引入相关依赖包如下:
<poi-scratchpad.version>3.14</poi-scratchpad.version>
<poi-ooxml.version>3.14</poi-ooxml.version>
<xdocreport.version>1.0.6</xdocreport.version>
<poi-ooxml-schemas.version>3.14</poi-ooxml-schemas.version>
<ooxml-schemas.version>1.3</ooxml-schemas.version>
<jsoup.version>1.11.3</jsoup.version>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>${poi-scratchpad.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi-ooxml.version}</version>
</dependency>
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>xdocreport</artifactId>
<version>${xdocreport.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>${poi-ooxml-schemas.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>${ooxml-schemas.version}</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>${jsoup.version}</version>
</dependency>
word转html,对于word2003和word2007转换方式不一样,因为word2003和word2007的格式不一样,工具类如下:
使用方法如下:
public String uploadSourceNews(MultipartFile file) {
String fileName = file.getOriginalFilename();
String suffixName = fileName.substring(fileName.lastIndexOf("."));
if (!".doc".equals(suffixName) && !".docx".equals(suffixName)) {
throw new UploadFileFormatException();
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMM");
String dateDir = formatter.format(LocalDate.now());
String directory = imageDir + "/" + dateDir + "/";
String content = null;
try {
InputStream inputStream = file.getInputStream();
if ("doc".equals(suffixName)) {
content = wordToHtmlUtil.Word2003ToHtml(inputStream, imageBucket, directory, Constants.HTTPS_PREFIX + imageVisitHost);
} else {
content = wordToHtmlUtil.Word2007ToHtml(inputStream, imageBucket, directory, Constants.HTTPS_PREFIX + imageVisitHost);
}
} catch (Exception ex) {
logger.error("word to html exception, detail:", ex);
return null;
}
return content;
}
关于doc和docx的一些存储格式介绍:
docx 是微软开发的基于 xml 的文字处理文件。docx 文件与 doc 文件不同, 因为 docx 文件将数据存储在单独的压缩文件和文件夹中。早期版本的 microsoft office (早于 office 2007) 不支持 docx 文件, 因为 docx 是基于 xml 的, 早期版本将 doc 文件另存为单个二进制文件。
DOCX is an XML based word processing file developed by Microsoft. DOCX files are different than DOC files as DOCX files store data in separate compressed files and folders. Earlier versions of Microsoft Office (earlier than Office 2007) do not support DOCX files because DOCX is XML based where the earlier versions save DOC file as a single binary file.
可能你会问了,明明是docx结尾的文档,怎么成了xml格式了?
很简单:你随便选择一个docx文件,右键使用压缩工具打开,就能得到一个这样的目录结构:
所以你以为docx是一个完整的文档,其实它只是一个压缩文件。
参考:
https://www.cnblogs.com/ct-csu/p/8178932.html
*请认真填写需求信息,我们会在24小时内与您取得联系。