环境:Ubuntu Server 11.04 64位,OpenJDK 6, OpenOffice 3
使用 jodconverter 需要用到OpenOffice的文档转换服务,实际部署时遇到中文转换乱码的问题,以下为详细的安装部署过程:
1) 运行如下命令安装OpenOffice及相关依赖的库:
$ sudo apt-get install xvfb -->约11.5MB
$ sudo apt-get install openoffice.org -->约130MB
$ sudo apt-get install openoffice.org-java-common
$ sudo apt-get install language-pack-zh-* -->必须的中文字体包
$ sudo apt-get install language-selector language-selector-common -->约35.4MB
2) 修改 /etc/environment (这个貌似不配置也行,我没试过)
修改 LANGUAGE="zh_CN:zh" 为 LANGUAGE="zh_CN:zh:en_US:en",没有就添加进去。
保存退出执行如下两个命令:
$ source /etc/environment
$ fontconfig-voodoo -f zh_CN
3) 安装openjdk6和中文字体配置 (这个是解决中文乱码的关键)
$ sudo apt-get install openjdk-6-jdk -->安装openjdk6
$ sudo apt-get install ttf-wqy-microhei -->安装中文字体
然后运行如下命令修改Java字体配置:
$ sudo vi /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties
修改为如下节点对应的值:
allfonts.umingcn=WenQuanYi Microhei Hei
allfonts.uminghk=WenQuanYi Microhei Hei
allfonts.umingtw=WenQuanYi Microhei Hei
allfonts.wqy-zenhei=WenQuanYi Microhei Hei
allfonts.shanheisun=WenQuanYi Microhei Hei
filename.WenQuanYi_Microhei_Hei=/usr/share/fonts/truetype/wqy/wqy-microhei.ttc
4) 启动 OpenOffice 文档转换服务 (记得后面有个符号&哦)
$ /usr/lib/libreoffice/program/soffice.bin -headless -nologo -norestore -nofirststartwizard -accept="socket,host=localhost,port=8100;urp" &
注:8100为端口号,可以按照实际需要更改。
其他注意事项:
如果使用jodconverter出现如下异常,只须将 jodconverter 的 tomcat 服务和 OpenOffice 的文档转换服务使用同一个用户启动即可:
com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException: conversion failed: could not save output document; OOo errorCode: 525
com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.loadAndExport(OpenOfficeDocumentConverter.java:142)
com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.convertInternal(OpenOfficeDocumentConverter.java:120)
com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:104)
com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter.convertInternal(OpenOfficeDocumentConverter.java:88)
com.artofsolving.jodconverter.openoffice.converter.AbstractOpenOfficeDocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:82)
......