debian openoffice文档转换服务

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-daemon
OPENOFFICE_SERVER_PID=/opt/yyj-pid/openoffice-server.pid

openoffice_server_start(){
	echo "openoffice服务启动中..."
	if [ -s "$OPENOFFICE_SERVER_PID" ]; then
		pid=$( cat "$OPENOFFICE_SERVER_PID" )
		echo "openoffice服务启动失败!openoffice服务已经启动,pid文件\"$OPENOFFICE_SERVER_PID\"已经存在,pid是#$pid。"
	else
		if [ -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" ]; then
			pid=$( cat "$OPENOFFICE_SERVER_PID" )
			echo "openoffice服务启动成功,pid是#$pid"
			sleep 0
		else
			echo "openoffice服务启动失败!空的pid文件:$OPENOFFICE_SERVER_PID。"
		fi
	fi
	return 0
}

openoffice_server_stop(){
	if [ -s "$OPENOFFICE_SERVER_PID" ]; then
		pid=$( cat "$OPENOFFICE_SERVER_PID" )
		$START_STOP_DAEMON --stop --quiet --pidfile $OPENOFFICE_SERVER_PID
		sleep 2
		remaining_process=$( ps "$pid" | grep "$pid" )
		if [ -n "$remaining_process" ]; then
			echo "无法停止pid为#$pid的服务,权限不够? (无法停止的服务:'$remaining_process')"
		else
			 if [ -f "$OPENOFFICE_SERVER_PID" ]; then
                             rm $OPENOFFICE_SERVER_PID
                         fi
                         echo "openoffice服务已经停止。"
       		 fi
	else
		echo "openoffice-server.pid不存在或者为空,openoffice服务可能未启动。"
	fi
	return 0
}

openoffice_server_status(){
	if [ -s "$OPENOFFICE_SERVER_PID" ]; then
		pid=$( cat "$OPENOFFICE_SERVER_PID" )
		remaining_process=$( ps "$pid" | grep "$pid" )
		if [ -n "$remaining_process" ]; then # -n 字符串长度大于0时为真
			echo "openoffice服务运行中,服务pid为#$pid。"
        	else
			echo "openoffice服务已经停止。"
        	fi
	else
		echo "openoffice服务可能未启动。"
	fi
	return 0
}

case "$1" in
	start)
		openoffice_server_start
		;;
	stop)
		openoffice_server_stop
		;;
	restart)
		openoffice_server_stop
		sleep 1
		openoffice_server_start
		;;
	status)
		openoffice_server_status
		;;
	*)
		echo "启动脚本用途:openoffice服务 {start|stop|restart|status}" >&2
		exit 1
		;;
esac

exit 0

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值