debian openoffice文档转换服务

来源:互联网 发布:双系统对mac 有影响吗 编辑:程序博客网 时间:2024/04/28 04:01

debian版本 6.0.4

依赖包安装

apt-get install xvfb #因为没有这个openoffice的服务没法运行 openoffice原来是需要xwindow桌面环境运行的 通过xvfb可以解决这个问题

apt-get install openoffice.org  #大约需要下载250多M吧

安装windows字体

因为如果你要转换doc或者ppt的话,linux没有windows的字体,所以需要安装

安装方法很简单

把所有的windows字体都拷贝到 /usr/share/fonts/windows 下

用root用户权限运行

mkfontscale 

mkfontdir

fc-cache -fv

重新启动机器 必须的

运行openoffice服务

xvfb-run -a soffice -headless -nologo -norestore -nofirststartwizard -accept="socket,port=2002;urp;"

下载pyodconverter

https://github.com/mirkonasato/pyodconverter  

这个py文件借助openoffice的pyuno可以进行文档格式的转换 具体用法看说明

注意pyodconverter需要使用openoffice的pyuno组件,安装openoffice的时候,uno已经安装在了默认的python上了。

所以要转换就很简单了 

python pyodconverter/DocumentConverter.py 第2周行事历.doc 2.pdf

注意上面的python是系统自带的python,因为里面包含了uno,才能执行。

debian下的openoffice启动停止脚本

START_STOP_DAEMON=/sbin/start-stop-daemonOPENOFFICE_SERVER_PID=/opt/yyj-pid/openoffice-server.pidopenoffice_server_start(){echo "openoffice服务启动中..."if [ -s "$OPENOFFICE_SERVER_PID" ]; thenpid=$( cat "$OPENOFFICE_SERVER_PID" )echo "openoffice服务启动失败!openoffice服务已经启动,pid文件\"$OPENOFFICE_SERVER_PID\"已经存在,pid是#$pid。"elseif [ -f "$OPENOFFICE_SERVER_PID" ]; then # 注意方括号两边的空格 是一定要的[ -f "$OPENOFFICE_SERVER_PID"] 这样就会报错rm $OPENOFFICE_SERVER_PID                fi$START_STOP_DAEMON --start --background --quiet --pidfile $OPENOFFICE_SERVER_PID --exec /usr/bin/xvfb-run -- -a soffice -headless -nologo -norestore -nofirststartwizard -accept="socket,port=2002;urp;"sleep 5 #这里时间要长一点 不然pid文件得不到pid值pgrep "soffice$" > "$OPENOFFICE_SERVER_PID"if [ -s "$OPENOFFICE_SERVER_PID" ]; thenpid=$( cat "$OPENOFFICE_SERVER_PID" )echo "openoffice服务启动成功,pid是#$pid"sleep 0elseecho "openoffice服务启动失败!空的pid文件:$OPENOFFICE_SERVER_PID。"fifireturn 0}openoffice_server_stop(){if [ -s "$OPENOFFICE_SERVER_PID" ]; thenpid=$( cat "$OPENOFFICE_SERVER_PID" )$START_STOP_DAEMON --stop --quiet --pidfile $OPENOFFICE_SERVER_PIDsleep 2remaining_process=$( ps "$pid" | grep "$pid" )if [ -n "$remaining_process" ]; thenecho "无法停止pid为#$pid的服务,权限不够? (无法停止的服务:'$remaining_process')"else if [ -f "$OPENOFFICE_SERVER_PID" ]; then                             rm $OPENOFFICE_SERVER_PID                         fi                         echo "openoffice服务已经停止。"        fielseecho "openoffice-server.pid不存在或者为空,openoffice服务可能未启动。"fireturn 0}openoffice_server_status(){if [ -s "$OPENOFFICE_SERVER_PID" ]; thenpid=$( cat "$OPENOFFICE_SERVER_PID" )remaining_process=$( ps "$pid" | grep "$pid" )if [ -n "$remaining_process" ]; then # -n 字符串长度大于0时为真echo "openoffice服务运行中,服务pid为#$pid。"        elseecho "openoffice服务已经停止。"        fielseecho "openoffice服务可能未启动。"fireturn 0}case "$1" instart)openoffice_server_start;;stop)openoffice_server_stop;;restart)openoffice_server_stopsleep 1openoffice_server_start;;status)openoffice_server_status;;*)echo "启动脚本用途:openoffice服务 {start|stop|restart|status}" >&2exit 1;;esacexit 0

把这个放到/etc/init.d下 然后。。。 不用我说了