准备工作:

一.软件环境:

jdk-7u9-linux-i586.tar.gz #openoffice安装需要有jdk支持 版本号你随便定

Apache_OpenOffice_4.1.1_Linux_x86_install-rpm_en-US.tar #openoffice软件请到官网下载,我的是最新版本

二.安装部署

1.查看是否安装了JDK


rpm -qa | grep java


如有显示说明已经安装了


那就删除掉


rmp -e java


2.拷贝jdk-7u9-linux-i586.tar.gz到数据库服务器的/web/下

mv jdk-7u9-linux-i586.tar.gz /home/wwwroot/

解压


tar -zxvf jdk-7u9-linux-i586.tar.gz


3.修改环境变量


vim /etc/profile


添加下面的代码


export JAVA_HOME=/www/web/jdk1.7.0_09
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin


保存退出


4.重新加载环境变量


source /etc/profile


5.验证是否成功


java -version

如果出现下面三行
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) Client VM (build 23.5-b02, mixed mode)

或者新建Test.java


class Test
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
保存


javac Test.java
java Test

运行结果如下

Hello World!

以上说明jdk没问题了。


6.安装openoffice

tar -zxvf Apache_OpenOffice_4.1.1_Linux_x86_install-rpm_en-US.tar.gz

进入里面RPMS去

ls查看

desktop-integration openoffice-en-US-calc-4.1.1-9775.i586.rpm
openoffice-4.1.1-9775.i586.rpm openoffice-en-US-draw-4.1.1-9775.i586.rpm
openoffice-base-4.1.1-9775.i586.rpm openoffice-en-US-help-4.1.1-9775.i586.rpm
openoffice-brand-base-4.1.1-9775.i586.rpm openoffice-en-US-impress-4.1.1-9775.i586.rpm
openoffice-brand-calc-4.1.1-9775.i586.rpm openoffice-en-US-math-4.1.1-9775.i586.rpm
openoffice-brand-draw-4.1.1-9775.i586.rpm openoffice-en-US-res-4.1.1-9775.i586.rpm
openoffice-brand-en-US-4.1.1-9775.i586.rpm openoffice-en-US-writer-4.1.1-9775.i586.rpm
openoffice-brand-impress-4.1.1-9775.i586.rpm openoffice-gnome-integration-4.1.1-9775.i586.rpm
openoffice-brand-math-4.1.1-9775.i586.rpm openoffice-graphicfilter-4.1.1-9775.i586.rpm
openoffice-brand-writer-4.1.1-9775.i586.rpm openoffice-images-4.1.1-9775.i586.rpm
openoffice-calc-4.1.1-9775.i586.rpm openoffice-impress-4.1.1-9775.i586.rpm
openoffice-core01-4.1.1-9775.i586.rpm openoffice-javafilter-4.1.1-9775.i586.rpm
openoffice-core02-4.1.1-9775.i586.rpm openoffice-math-4.1.1-9775.i586.rpm
openoffice-core03-4.1.1-9775.i586.rpm openoffice-ogltrans-4.1.1-9775.i586.rpm
openoffice-core04-4.1.1-9775.i586.rpm openoffice-onlineupdate-4.1.1-9775.i586.rpm
openoffice-core05-4.1.1-9775.i586.rpm openoffice-ooofonts-4.1.1-9775.i586.rpm
openoffice-core06-4.1.1-9775.i586.rpm openoffice-ooolinguistic-4.1.1-9775.i586.rpm
openoffice-core07-4.1.1-9775.i586.rpm openoffice-pyuno-4.1.1-9775.i586.rpm
openoffice-draw-4.1.1-9775.i586.rpm openoffice-ure-4.1.1-9775.i586.rpm
openoffice-en-US-4.1.1-9775.i586.rpm openoffice-writer-4.1.1-9775.i586.rpm
openoffice-en-US-base-4.1.1-9775.i586.rpm openoffice-xsltfilter-4.1.1-9775.i586.rpm

然后rpm -ivh *.rpm

很快就安装完成了

7.启动openoffice

cd /opt/openoffice4/program/

我装的是openoffice4,你自己看清楚,使用命令启动

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

如果出现下面
[1] 1784

再查看一下进程

[root@www program]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1560/pure-ftpd (SER
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1083/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1027/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1543/sendmail
tcp 0 0 127.0.0.1:8100 0.0.0.0:* LISTEN 1814/soffice.bin
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1494/mysqld
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 1576/memcached
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 1523/redis-server 1
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1067/nginx
tcp 0 0 :::21 :::* LISTEN 1560/pure-ftpd (SER
tcp 0 0 :::22 :::* LISTEN 1083/sshd
tcp 0 0 ::1:631 :::* LISTEN 1027/cupsd

可以发现8100端口已经处在监听状态

三、测试文档装换

需要一个Python脚本

注意我直接放在/opt/openoffice4/program 下面建了。

命名为DocumentConvert.py

直接用了网上一个哥们的代码

#
# PyODConverter (Python OpenDocument Converter) v1.1 - 2009-11-14
#
# This script converts a document from one office format to another by
# connecting to an OpenOffice.org instance via Python-UNO bridge.
#
# Copyright (C) 2008-2009 Mirko Nasato <mirko@artofsolving.com>
# Licensed under the GNU LGPL v2.1 - http://www.gnu.org/licenses/lgpl-2.1.html
# - or any later version.
#
DEFAULT_OPENOFFICE_PORT = 8100

import uno
from os.path import abspath, isfile, splitext
from com.sun.star.beans import PropertyValue
from com.sun.star.task import ErrorCodeIOException
from com.sun.star.connection import NoConnectException

FAMILY_TEXT = "Text"
FAMILY_WEB = "Web"
FAMILY_SPREADSHEET = "Spreadsheet"
FAMILY_PRESENTATION = "Presentation"
FAMILY_DRAWING = "Drawing"

#---------------------#
# Configuration Start #
#---------------------#

# see http://wiki.services.openoffice.org/wiki/Framework/Article/Filter

# most formats are auto-detected; only those requiring options are defined here
IMPORT_FILTER_MAP = {
    "txt": {
        "FilterName": "Text (encoded)",
        "FilterOptions": "utf8"
    },
    "csv": {
        "FilterName": "Text - txt - csv (StarCalc)",
        "FilterOptions": "44,34,0"
    }
}

EXPORT_FILTER_MAP = {
    "pdf": {
        FAMILY_TEXT: { "FilterName": "writer_pdf_Export" },
        FAMILY_WEB: { "FilterName": "writer_web_pdf_Export" },
        FAMILY_SPREADSHEET: { "FilterName": "calc_pdf_Export" },
        FAMILY_PRESENTATION: { "FilterName": "impress_pdf_Export" },
        FAMILY_DRAWING: { "FilterName": "draw_pdf_Export" }
    },
    "html": {
        FAMILY_TEXT: { "FilterName": "HTML (StarWriter)" },
        FAMILY_SPREADSHEET: { "FilterName": "HTML (StarCalc)" },
        FAMILY_PRESENTATION: { "FilterName": "impress_html_Export" }
    },
    "odt": {
        FAMILY_TEXT: { "FilterName": "writer8" },
        FAMILY_WEB: { "FilterName": "writerweb8_writer" }
    },
    "doc": {
        FAMILY_TEXT: { "FilterName": "MS Word 97" }
    },
    "rtf": {
        FAMILY_TEXT: { "FilterName": "Rich Text Format" }
    },
    "txt": {
        FAMILY_TEXT: {
            "FilterName": "Text",
            "FilterOptions": "utf8"
        }
    },
    "ods": {
        FAMILY_SPREADSHEET: { "FilterName": "calc8" }
    },
    "xls": {
        FAMILY_SPREADSHEET: { "FilterName": "MS Excel 97" }
    },
    "csv": {
        FAMILY_SPREADSHEET: {
            "FilterName": "Text - txt - csv (StarCalc)",
            "FilterOptions": "44,34,0"
        }
    },
    "odp": {
        FAMILY_PRESENTATION: { "FilterName": "impress8" }
    },
    "ppt": {
        FAMILY_PRESENTATION: { "FilterName": "MS PowerPoint 97" }
    },
    "swf": {
        FAMILY_DRAWING: { "FilterName": "draw_flash_Export" },
        FAMILY_PRESENTATION: { "FilterName": "impress_flash_Export" }
    }
}

PAGE_STYLE_OVERRIDE_PROPERTIES = {
    FAMILY_SPREADSHEET: {
        #--- Scale options: uncomment 1 of the 3 ---
        # a) 'Reduce / enlarge printout': 'Scaling factor'
        "PageScale": 100,
        # b) 'Fit print range(s) to width / height': 'Width in pages' and 'Height in pages'
        #"ScaleToPagesX": 1, "ScaleToPagesY": 1000,
        # c) 'Fit print range(s) on number of pages': 'Fit print range(s) on number of pages'
        #"ScaleToPages": 1,
        "PrintGrid": False
    }
}

#-------------------#
# Configuration End #
#-------------------#

class DocumentConversionException(Exception):

    def __init__(self, message):
        self.message = message

    def __str__(self):
        return self.message


class DocumentConverter:
    
    def __init__(self, port=DEFAULT_OPENOFFICE_PORT):
        localContext = uno.getComponentContext()
        resolver = localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext)
        try:
            context = resolver.resolve("uno:socket,host=localhost,port=%s;urp;StarOffice.ComponentContext" % port)
        except NoConnectException:
            raise DocumentConversionException, "failed to connect to OpenOffice.org on port %s" % port
        self.desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)

    def convert(self, inputFile, outputFile):

        inputUrl = self._toFileUrl(inputFile)
        outputUrl = self._toFileUrl(outputFile)

        loadProperties = { "Hidden": True }
        inputExt = self._getFileExt(inputFile)
        if IMPORT_FILTER_MAP.has_key(inputExt):
            loadProperties.update(IMPORT_FILTER_MAP[inputExt])
        
        document = self.desktop.loadComponentFromURL(inputUrl, "_blank", 0, self._toProperties(loadProperties))
        try:
            document.refresh()
        except AttributeError:
            pass

        family = self._detectFamily(document)
        self._overridePageStyleProperties(document, family)
        
        outputExt = self._getFileExt(outputFile)
        storeProperties = self._getStoreProperties(document, outputExt)

        try:
            document.storeToURL(outputUrl, self._toProperties(storeProperties))
        finally:
            document.close(True)

    def _overridePageStyleProperties(self, document, family):
        if PAGE_STYLE_OVERRIDE_PROPERTIES.has_key(family):
            properties = PAGE_STYLE_OVERRIDE_PROPERTIES[family]
            pageStyles = document.getStyleFamilies().getByName('PageStyles')
            for styleName in pageStyles.getElementNames():
                pageStyle = pageStyles.getByName(styleName)
                for name, value in properties.items():
                    pageStyle.setPropertyValue(name, value)

    def _getStoreProperties(self, document, outputExt):
        family = self._detectFamily(document)
        try:
            propertiesByFamily = EXPORT_FILTER_MAP[outputExt]
        except KeyError:
            raise DocumentConversionException, "unknown output format: '%s'" % outputExt
        try:
            return propertiesByFamily[family]
        except KeyError:
            raise DocumentConversionException, "unsupported conversion: from '%s' to '%s'" % (family, outputExt)
    
    def _detectFamily(self, document):
        if document.supportsService("com.sun.star.text.WebDocument"):
            return FAMILY_WEB
        if document.supportsService("com.sun.star.text.GenericTextDocument"):
            # must be TextDocument or GlobalDocument
            return FAMILY_TEXT
        if document.supportsService("com.sun.star.sheet.SpreadsheetDocument"):
            return FAMILY_SPREADSHEET
        if document.supportsService("com.sun.star.presentation.PresentationDocument"):
            return FAMILY_PRESENTATION
        if document.supportsService("com.sun.star.drawing.DrawingDocument"):
            return FAMILY_DRAWING
        raise DocumentConversionException, "unknown document family: %s" % document

    def _getFileExt(self, path):
        ext = splitext(path)[1]
        if ext is not None:
            return ext[1:].lower()

    def _toFileUrl(self, path):
        return uno.systemPathToFileUrl(abspath(path))

    def _toProperties(self, dict):
        props = []
        for key in dict:
            prop = PropertyValue()
            prop.Name = key
            prop.Value = dict[key]
            props.append(prop)
        return tuple(props)


if __name__ == "__main__":
    from sys import argv, exit
    
    if len(argv) < 3:
        print "USAGE: python %s <input-file> <output-file>" % argv[0]
        exit(255)
    if not isfile(argv[1]):
        print "no such input file: %s" % argv[1]
        exit(1)

    try:
        converter = DocumentConverter()    
        converter.convert(argv[1], argv[2])
    except DocumentConversionException, exception:
        print "ERROR! " + str(exception)
        exit(1)
    except ErrorCodeIOException, exception:
        print "ERROR! ErrorCodeIOException %d" % exception.ErrCode
        exit(1)


ok我们放一个doc文档转一下试试

[root@www program]# python DocumentConvert.py 1.doc 1.html
[root@www program]#

没问题

转pdf试试呢

[root@www program]# python DocumentConvert.py 1.doc 1.pdf
[root@www program]#


没问题。一切OK


更多相关文章

  1. 高分求:如何解析IdHTTP获得的http代码?用mshttp的IHTMLDocument2可
  2. 韩顺平_轻松搞定网页设计(html+css+javascript)_第19讲_js运行原
  3. HTML显示日期时间代码 - [js 特效代码]
  4. 解决html代码中插入的图片在浏览器中不显示的办法
  5. HTML代码格式化工具
  6. j2ee的web项目,有最终的html代码(即f12看到的最终给用户浏览器展示
  7. 如果字符串包含html代码,如何用python检测?
  8. 【竞价网站绝技】根据访客ip,页面显示访客所属城市的html代码(借用
  9. jquery入门-$.each 数组操作与表单操作代码

随机推荐

  1. android音乐播放器常见操作
  2. android 获取 imei号码以及其他信息
  3. Android(安卓)程序中哪个 Activity 最先
  4. Android使用代码
  5. Android三种方法设置ImageView的图片
  6. Android EventBus3.0 索引
  7. Android监听应用程序安装和卸载
  8. android theme中的各个color的含义
  9. android tp多点触摸
  10. Android下rtc驱动调用流程