把office文件转换成pdf

1 篇文章 0 订阅
1 篇文章 0 订阅

一,安装OpenOffice软件

    下载地址:http://www.openoffice.org/download/index.html

    1.用cdm进入安装目录下的program文件夹下 如:C:\Program Files (x86)\OpenOffice 4\program

    2.执行 soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;"

        或

      soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

二,在java项目中导入需要使用的jar

<dependency>
    <groupId>commons-cli</groupId>
    <artifactId>commons-cli</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.4</version>
</dependency>
<dependency>
    <groupId>com.artofsolving</groupId>
    <artifactId>jodconverter</artifactId>
    <version>2.2.2</version>
</dependency>
<dependency>
    <groupId>com.artofsolving</groupId>
    <artifactId>jodconverter-maven-plugin</artifactId>
    <version>2.2.2</version>
</dependency>
<dependency>
    <groupId>org.openoffice</groupId>
    <artifactId>juh</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.openoffice</groupId>
    <artifactId>jurt</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.openoffice</groupId>
    <artifactId>ridl</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.5.6</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jdk14</artifactId>
    <version>1.5.6</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.openoffice</groupId>
    <artifactId>unoil</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>com.thoughtworks.xstream</groupId>
    <artifactId>xstream</artifactId>
    <version>1.3.1</version>
</dependency>

如果项目中已经存在的可以删除

三,写转换类

package com.humming.org.file.util;

import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

import java.io.File;
import java.net.ConnectException;

/**
 * 该类用于将word等文件转换成pdf文件
 * Created by hang on 2018/4/25.
 */
public class DocConverter {
    private String fileString;
    private String fileName;
    private File pdfFile;
    private File docFile;

    public DocConverter(String fileString) {
        ini(fileString);
    }

    /*
     * 初始化
     * @param fileString
     */
    private void ini(String fileString) {
        this.fileString = fileString;
        fileName = fileString.substring(0, fileString.lastIndexOf("."));
        docFile = new File(fileString);
        pdfFile = new File(fileName + ".pdf");
//        swfFile = new File(fileName + ".swf");
    }

    /*
     * 转为PDF
     */
    private void doc2pdf() throws Exception {
        if (docFile.exists()) {
            if (!pdfFile.exists()) {
                OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
                try {
                    connection.connect();
                    DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
                    converter.convert(docFile, pdfFile);

                    System.out.println("****pdf转换成功,PDF输出:" + pdfFile.getPath() + "****");
                } catch (ConnectException e) {
                    //ToDo Auto-generated catch block
                    e.printStackTrace();
                    System.out.println("****pdf转换异常,openoffice服务未启动!****");
                    throw e;
                } catch (OpenOfficeException e) {
                    e.printStackTrace();
                    System.out.println("****pdf转换器异常,读取转换文件失败****");
                    throw e;
                } catch (Exception e) {
                    e.printStackTrace();
                    throw e;
                }finally {
                    //关闭connection
                    connection.disconnect();
                }
            } else {
                System.out.println("****已经转换为pdf,不需要再进行转化****");
            }
        } else {
            System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");
        }
    }

    /*
     * 转换主方法
     */
    public boolean conver() {
        try {
            doc2pdf();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }


    public static void main(String s[]) {
        DocConverter d = new DocConverter("C:/Users/Administrator/Desktop/idc/1111.xls");
        d.conver();

    }


}

理论上支持21种格式转换: .pdf .doc .xls .txt .ppt  .swf .xhtml .html .odt .sxw .rtf .wpd .wiki .ods .sxc .csv .tsv .odp .sxi .odg .svg

经过本人测试这里支持.doc docx .xls xlsx .txt .ppt pptx 转换成 .pdf 格式,ps:只支持微软的offic文档不支持wps保存的格式。

代码的实现是参考的网上其他人写的然后做了一些调整,可能还有哪里不够好希望多多指点。如果哪位有更好的实现希望分享一下。谢谢!



文件换合并工具使用 需安装.netframework 4.0 office2007以上版本。 承包方相关表格比较多时,想要这些表格按一定顺序放到一起打印,此工具可解决这个问题,使用方法如下: 1.选择工具包里的第一个应用程序FileMerger.exe,双击运行。 2.启动程序后,打开后的初始界面如下: 3.使用此工具,大致5个步骤,如下图依次进行操作: 4.文件夹路径时指需要合并的文件所在文件夹的路径,这里需特别注意,选择要合并文件所在文件夹的父文件夹,如下图,要合并换的是各个承包方下的相关表格,需要选择各个承包方文件夹的父文件夹,即“新建文件夹”(文件夹名字以方便辨识为主);pdf文件路径是合并后的pdf存放路径。 5.匹配文件名中,可以根据需要合并换需要,添加相关表格,在最下面输入表格名称即可,在文件名前打钩,才会使此文件参与合并。 可右击鼠标上下移动文件名,调整文件合并时的顺序。 6.添加表格,勾选要输出的表格,然后点击【保存设置】,可将设置保存在配置文件中。下次无需再次调整。 7.点击【开始合并】(一次就好,不要多点),开始进行文件换合并,可在进度条中看到合并数据。 8. 合并完成后,会有完成用时提示,可以去查看合并后的文件,合并后的pdf是按承包方为单位,以一定顺序换合并的。 7.如果软件发生崩溃,请联系技术支持。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值