基于OpenOffice的PDF转换引擎安装及配置使用说明

将WORD转为PDF 一般来说,有两种方式:
1.如果是office 2007 以上版本,菜单中右这个选项,直接可以将word 文档转为 PDF 文件。
2.可以利用OPENOFFICE 服务,这是一个开源软件,能打开word 文档。

为什么要将word 文档转为PDF 呢,一方面为防止别人篡改,或者加密等。

因为利用office 2007 以上版本转PDF 比较容易,因此,我测试了下用 openoffice 的方式。 首先需要安装openoffice . openoffice 的安装包可以在网上搜,也可以去官网下载。
OpenOffice软件的安装非常的方便,只要按照系统提供的软件列表地址找到该文件,然后双击安装即可。然后选择路径,基本上是下一步,下一步,然后就可以安装完毕。

现在是重点,安装完毕后,启动openoffice  的PDF 转换服务:

使用cmd打开Windows命令行窗口:
执行进入相应目录(64位操作系统使用):
程序代码 程序代码

cd C:\Program Files\OpenOffice.org 3\program


执行:
程序代码 程序代码

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


启动PDF转换引擎服务。
转换PDF 引擎启动后,就可以利用 java 等编程语言进行处理:
程序代码 程序代码

/**
     * 将Office文档转换为PDF. 运行该函数需要用到OpenOffice, OpenOffice下载地址为
     * http://www.openoffice.org/
     *
     * <pre>
     * 方法示例:
     * String sourcePath = "F:\\office\\source.doc";
     * String destFile = "F:\\pdf\\dest.pdf";
     * Converter.office2PDF(sourcePath, destFile);
     * </pre>
     *
     * @param sourceFile
     *            源文件, 绝对路径. 可以是Office2003-2007全部格式的文档, Office2010的没测试. 包括.doc,
     *            .docx, .xls, .xlsx, .ppt, .pptx等. 示例: F:\\office\\source.doc
     * @param destFile
     *            目标文件. 绝对路径. 示例: F:\\pdf\\dest.pdf
     * @return 操作成功与否的提示信息. 如果返回 -1, 表示找不到源文件, 或url.properties配置错误; 如果返回 0,
     *         则表示操作成功; 返回1, 则表示转换失败
     */
    public static int office2PDF(String sourceFile, String destFile) {
        try {
            File inputFile = new File(sourceFile);
            if (!inputFile.exists()) {
                return -1;// 找不到源文件, 则返回-1
            }

            // 如果目标路径不存在, 则新建该路径
            File outputFile = new File(destFile);
            if (!outputFile.getParentFile().exists()) {
                outputFile.getParentFile().mkdirs();
            }

            String OpenOffice_HOME = "C:\\Program Files\\OpenOffice.org 3";//这里是OpenOffice的安装目录, 在我的项目中,为了便于拓展接口,没有直接写成这个样子,但是这样是绝对没问题的
            // 如果从文件中读取的URL地址最后一个字符不是 '\',则添加'\'
            if (OpenOffice_HOME.charAt(OpenOffice_HOME.length() - 1) != '\\') {
                OpenOffice_HOME += "\\";
            }
            // 启动OpenOffice的服务
            String command = OpenOffice_HOME
                    + "program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";
            Process pro = Runtime.getRuntime().exec(command);
            // connect to an OpenOffice.org instance running on port 8100
            OpenOfficeConnection connection = new SocketOpenOfficeConnection(
                    "127.0.0.1", 8100);
            connection.connect();

            // convert
            DocumentConverter converter = new OpenOfficeDocumentConverter(
                    connection);
            converter.convert(inputFile, outputFile);

            // close the connection
            connection.disconnect();
            // 关闭OpenOffice服务的进程
            pro.destroy();

            return 0;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return -1;
        } catch (ConnectException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 1;
    }


源代码里面包含了jodconvert 包,可以直接使用,如果需要新版本,可以到sourceforge上去下载。

源代码下载:

下载文件 点击下载此文件

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
[本日志由 轻舞肥羊 于 2012-08-25 06:08 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: openoffice pdf
相关日志:
评论: 2 | 引用: 0 | 查看次数: -
回复回复小狗熊[2013-05-19 06:41 PM | del]
但在转换过程中存在格式不正确的状态,没法解决。
回复回复delectate[2012-09-02 01:34 PM | del]
其实很简单。

win可以安装pdf虚拟打印机,直接打印成pdf文件了;linux可以用imagemagick的convert命令。convert input.odt output.pdf,搞定~
回复来自 轻舞肥羊 的评论 轻舞肥羊 于 2012-09-02 09:09 PM 回复
是的,但重要的系统集成,而不是单一的完成功能。要将这些东西统集成到你的项目工程中,成为一个整体,而不是仅仅为了实现这个功能。
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.