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下 然后。。。 不用我说了