文章时间:2020-12-5 16:38:54 解决问题:java实现word转pdf
- 方式一 e-iceblue的免费版api
- 第一步 添加maven依赖及远程仓库
- 第二步 编写后台代码
- 方式二 openoffice转换
- 第一步 添加maven依赖
- 第二步 编写后台代码
目前发现可用的实现方式有两种,一种是使用e-iceblue的免费版api,此方法最为简单但存在限制,导出页数不能超过三页。 另一种是使用openoffice,但较上一种方法麻烦一些,需要安装openoffice的软件,但没有导出限制,请根据自身需求自行选用。
方式一 e-iceblue的免费版api
官方文档https://www.e-iceblue.cn/spiredocforjavaconversion/java-convert-word-to-pdf.html
第一步 添加maven依赖及远程仓库
代码语言:javascript复制</dependencies>
...
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc.free</artifactId>
<version>3.9.0</version>
</dependency>
...
</dependencies>
<repositories>
...
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
...
</repositories>
第二步 编写后台代码
参考代码如下
代码语言:javascript复制 // 模板文件路径
String templateUrl = "C:\Users\dev\Desktop\template.docx";
// word文件生成路径
String generateUrl ="C:\Users\dev\Desktop\generate.pdf";
Document document = new Document();
document.loadFromFile(generateUrl);
//保存生成的pdf
document.saveToFile(generateUrl, FileFormat.PDF);
方式二 openoffice转换
官方文档:http://www.openoffice.org/why/index.html
openoffice安装教程:http://wiki.nooss.cn/archives/405.html
第一步 添加maven依赖
代码语言:javascript复制需注意:此处引用的版本为2.2.1版本,不支持.docx文件的转换,若需要转换.docx文件需2.2.2及以上版本,但maven库没有此版本需自行下载导入jar包
<dependency>
<groupId>com.artofsolving</groupId>
<artifactId>jodconverter</artifactId>
<version>2.2.1</version>
</dependency>
第二步 编写后台代码
代码语言:javascript复制 // word文件路径
String sourceFile = "C:\Users\dev\Desktop\template.docx";
// 生成的pdf路径
String destFile = "C:\Users\dev\Desktop\generate.pdf";
try {
File inputFile = new File(sourceFile);
// 如果目标路径不存在, 则新建该路径
File outputFile = new File(destFile);
if (!outputFile.getParentFile().exists()) {
outputFile.getParentFile().mkdirs();
}
// 连接到运行在端口8100上的OpenOffice
OpenOfficeConnection connection = new SocketOpenOfficeConnection(
"127.0.0.1", 8100);
connection.connect();
// 文件转换
DocumentConverter converter = new OpenOfficeDocumentConverter(
connection);
converter.convert(inputFile, outputFile);
// 关闭连接
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}