一、前言
在日常的工作中,我们常常会遇到一种文档处理需求:文档预览。比如,我们通过在线编辑器编写了一个 word 文档,我们想看看 word 文档的生成效果是否正常。但是,word 文档在网页浏览器是无法直接查看的,这时候,我们可以把 word 文档转为 pdf 文档。pdf 文档可以直接在浏览器打开查看。
因此,我们本章节就讨论下word文档转pdf文档的处理。
二、关于pdf文档转换器
在 pdf 转换上,有不少转换器。但大多是要收费的。如果,要找一款免费,而且 Java 能用的,目前比较好的选择就是 documents4j 这个生成器了。它不单单能处理 Office 文档,还能处理 html 之类的。
documents4j 的github主页地址为:https://github.com/documents4j/documents4j
documents4j 的官方主页地址为:https://documents4j.com
关于word转换处理所需要的 Maven 软件依赖,添加如下:
<!-- https://mvnrepository.com/artifact/com.documents4j/documents4j-local --> <!-- word 转 pdf 服务器需要先有office环境,linux下需要 OpenOffice / LibreOffice --> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-local</artifactId> <version>1.1.12</version> </dependency> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-transformer-msoffice-word</artifactId> <version>1.1.12</version> </dependency>
如果还需要转换Excel则可以添加以下依赖
<!-- https://mvnrepository.com/artifact/com.documents4j/documents4j-transformer-msoffice-excel --> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-transformer-msoffice-excel</artifactId> <version>1.1.12</version> </dependency>
如果还需要专函PPT则可以添加以下依赖
<!-- https://mvnrepository.com/artifact/com.documents4j/documents4j-transformer-msoffice-powerpoint --> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-transformer-msoffice-powerpoint</artifactId> <version>1.1.12</version> </dependency>
三、关于跨平台的兼容性
documents4j 是一个 Java 库,用于将文档转换为另一种文档格式。这是通过将转换委托给任何本机应用程序来实现的,该应用程序了解将给定文件转换为所需的目标格式。documents4j 带有 MS Word 和 MS Excel for Windows 的转换,例如,允许将 DOCX 文件转换为 PDF 文件,而不会在生成的文档中出现通常的失真,这在使用 非Microsoft 产品进行的转换中经常观察到。
在转换处理上,它使用了Microsoft Office 的API,所以需要依赖Office软件。在Windows环境,我们安装Microsoft Office即可。如果是Linux环境,需要安装OpenOffice 或者LibreOffice
四、转换程序样例
documents4j的工作方式有2种:本地 和 远程。我们这里只讨论本地模式。程序处理步骤如下:

五、关于资源的回收
其实,大家看第四点的时候,应该知道,documents4j 它创建了一个转换器对象。其实这个转换器对象,在转换完毕后,不会销毁。这就像我们常用的线程池对象,我们用完线程归还即可,但是线程池是一直存在的。因此,为了回收资源,我们需要调用它的 shutDown 方法。处理如下:

六、关于转换效率和一致性
其实文档的转换的效率(即速度)不算太高,如果内容较少 大约 3-5秒一个文件 。如果内容很多,则较慢。
在文档一致性上,documents4j是较为优秀的,内容的格式处理上,基本一致。
本章节完结