java实现word转pdf

2022-05-28 10:24:21 浏览数 (1)

文章时间: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依赖

需注意:此处引用的版本为2.2.1版本,不支持.docx文件的转换,若需要转换.docx文件需2.2.2及以上版本,但maven库没有此版本需自行下载导入jar包

代码语言:javascript复制
        <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();
        }

0 人点赞