一、环境
linux下安装openoffice
1、首先先下载好需要的rpm包: Apache_OpenOffice_4.0.0_Linux_x86-64_install-rpm_zh-CN.tar.gz
或直接命令下载:wget http://heanet.dl.sourceforge .NET /project/openofficeorg.mirror/4.0.0/binaries/zh-CN/Apache_OpenOffice_4.0.0_Linux_x86-64_install-rpm_zh-CN.tar.gz
放到服务器的目录下(我放到了opt下)
2、将下载的openoffice解压(我直接解压到opt目录):tar -zxvf Apache_OpenOffice_4.0.0_Linux_x86-64_install-rpm_zh-CN.tar.gz
3、解压后生成文件夹zh-CN 进到RPMS目录下,直接yum localinstall *.rpm
4、再装RPMS/desktop-integration目录下的openoffice4.0-redhat-menus-4.0-9702.noarch.rpm:yum localinstall openoffice4.0-redhat-menus-4.0-9702.noarch.rpm
5、安装完成直接启动Openoffice服务:
临时启动 /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard一直后台启动 nohup /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
6、查看服务是否启动(端口8100是否被soffice占用):netstat -lnp |grep 8100
显示结果:tcp 0 0 127.0.0.1:8100 0.0.0.0:* LISTEN 19501/soffice.bin
7、因为一般安装完后openoffice在转换pdf时候会因为确实字体造成中文乱码情况,所有一般要将window下的字体库打包拷贝到linux服务器上。
(1)查看系统字体文件cat /etc/fonts/fonts.conf
(2) 将window下的字符库上传到linux下。一般是在 /usr/share/fonts目录下,创建fonts目录。
(3) 执行fc-cache。
(4)重启openoffice。
大功告成!!!
二、项目配置
maven的pom的配置
com.artofsolving
2.2.1
org.openoffice
4.1.2
项目部署的时候要将jodconverter换成2.2.2版本。因为maven中央仓库没有2.2.2版本。使用2,2,2版本的原因:2,2,1版本不支持xlsx、docx、pptx格式的文档转换pdt。
/**
* 将文件转换成pdf文件
* @param filepath doc文件存放位置
* @return
*/
public static boolean doc2pdf(String filepath){
boolean result=false;
String filename=filepath.substring(0, filepath.lastIndexOf("."));
String filetype=filepath.substring(filepath.lastIndexOf(".")+1);
File file=null;
String os=System.getProperties().getProperty("os.name");
//如果当txt文档转换的时候,因为windows下的编码和linux下的文件编码格式不一样会造成 // 中文乱码所有要将txt文件转成utt-8格式的odt文件。
if(!os.toLowerCase().startsWith("win") && "txt".equals(filetype.toLowerCase())){
String odt="iconv -f gb2312 -t utf-8 "+filename+".txt -c -s -o "+filename+".odt";
try {
Process pro=Runtime.getRuntime().exec(odt);
pro.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
file=new File(filename+".odt");
}else{
file=new File(filepath);
}
File pdfFile=new File(filename+".pdf");
System.out.println(filetype);
if(file.exists()){
if(!pdfFile.exists()){
//openOffoceAddress是openoffice安装目录
String command=Constant.openOffoceAddress+"program/soffice -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";
try {
Runtime.getRuntime().exec(command);
OpenOfficeConnection connection=new SocketOpenOfficeConnection("127.0.0.1",8100);
connection.connect();
DocumentConverter converter=new OpenOfficeDocumentConverter(connection);
converter.convert(file,pdfFile);
connection.disconnect();
System.out.println("****pdf转换成功,PDF输出:"+pdfFile.getPath()+"****");
result=true;
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
System.out.println(file.getName()+"pdf转换失败");
}
}
}
return result;
}