openoffice插件安装启动
不管是windows还是linux的安装包,都可以到openoffice的官网上直接下载,下载地址如下:http://www.openoffice.org/zh-cn/download
一、windows下的安装启动
windows下的安装较为简单,直接在官网上下载安装包一直点击下一步安装即可,这里不做进一步记录。启动步骤如下:
- 打开CMD界面,通过cd命令进入到openoffice下的program文件夹中,例如:
cd D:\Program Files (x86)\OpenOffice 4\program
- 输入命令:
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
为方便启动,可以创建一个bat处理文件,下次启动直接点击即可。具体创建方法,先新建一个txt文本,在文本中输入对应代码,再修改文件后缀名为bat即可。文本中输入代码如下:
@echo off
cd C:\Program Files (x86)\OpenOffice 4\program
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
二、Linux下的安装启动
1、安装步骤
- 在官网中下载对应的linux安装包,分别有deb和rpm格式的32位、64位,目前大部分使用的linux系统应该都是支持rpm格式的,此处选择下载rpm的64位,后续安装启动步骤也是针对此版本。
如果需要查询系统支持哪种格式,可以使用一下命令,如果rpm命令能获得版本号,则支持rpm,反之则是支持deb:
rpm --version
dpkg --version
- 上传gz包到/usr/local/src/openoffice(可以自己选择目录,但后续代码相应要做路径修改)。此处上传选择使用winscp之类的工具直接进行上传,没有使用命令等。
- 使用以下命令进行解压(注意文件路径正确):
cd /usr/local/src/openoffice
tar -zxvf Apache_OpenOffice_4.1.7_Linux_x86-64_install-rpm_zh-CN.tar.gz
- 进入解压后文件夹中的RPMS目录,安装rpm文件,具体命令如下(注意文件路径正确):
cd /usr/local/src/openoffice/zh-CN/RPMS
rpm -ivh *.rpm
- 进入desktop-integration目录,安装openoffice,具体命令如下(注意文件路径正确):
cd desktop-integration
rpm -ivh openoffice4.1.7-redhat-menus-4.1.7-9800.noarch.rpm
2、linux下非txt文件中文乱码问题处理
如果需要转换的文档涉及中文内容,则此步骤为必须步骤,否则所有文档类型中的中文内容都将因缺少中文字体而变成乱码。(注意:txt一类纯文本类型的中文乱码比较特殊,此处解决方法并不能处理,后续会专门讲述该问题。)
具体处理步骤如下:
-
上传simhei.ttf、simsun.ttc两个文件到/usr/java/jdk1.8.0_161/jre/lib/fonts/fallback。
文件可以在windows系统中查找,具体位置可能不一样,楼主的windows10是放C:\Windows\WinSxS中。
上传方式仍是使winscp之类的工具上传,具体的jdk位置视个人而定。 -
复制/usr/java/jdk1.8.0_161/jre/lib/fonts到/usr/share/fonts并更新缓存,具体命令如下(仍要注意两个路径是自己的啊):
cp -rf /usr/java/jdk1.8.0_161/jre/lib/fonts /usr/share/fonts
fc-cache
如果提示fc-cache: command not found,则需要先安装字体命令,再执行该命令。安装字体命令的语句如下:
yum install fontconfig
- 如果已启动openoffice,则需要关闭后重启才能生效。具体关闭方法可以使用
ps -ef|grep openoffice
命令获取对应的进程号,再用kill -9 进程号
杀死进程即可。启动方法接下来会再记录。
3、启动方法
启动方法较为简单,直接使用以下命令即可(注意路径正确):
nohup /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
建议进行一下自动启动设置,方便后续系统重启能自动启动,直接在/etc/rc.local文件最后换行添加如下命令即可:nohup soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
查看是否启动成功可以使用命令ps -ef|grep openoffice
,如果有进程则是启动成功,相应的可以根据查询到的进程号使用kill -9 进程号
命令杀死进程关闭openoffice。
启动时可能遇到一下问题:
- 启动时出现:error while loading shared libraries: libXext.so.6: cannot open shared object file: No such file or directory
解决:这个是找不到libXext.so.6文件。去系统里面的/usr/lib64中或者/usr/lib,查看有没有这个文件,如果有就用cp
命令复制到/opt/openoffice4/program/目录里面,赋予权限chmod 777 libXext.so.6
。
如果没有,需要安装:yum install libXext.x86_64
(64位) (yum install libXext.i686
32位)。 - 启动时提醒:no suitable windowing system found, exiting
解决:yum groupinstall "X Window System"
Java中使用openoffice转换pdf
一、jar包引用
openoffice需要特别引用的jar包主要有以下两个:
- jodconverter-local-4.3.0.jar
- commons-io-2.6.jar
如果为非maven项目,则需要自己找jar包下载,如果为maven项目,则可以按照以下引用:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-local</artifactId>
<version>4.3.0</version>
</dependency>
二、调用方法
File thisFile = new File("D://file.doc");
final LocalOfficeManager officeManager = LocalOfficeManager.install();
try {
officeManager.start();
File file = new File(pdfDocumentPath);
JodConverter.convert(thisFile).to(file).execute();
}catch (Exception e){
GRGLogger.info("+++++++++++转换PDF失败 +++++++++++++++");
return false;
}finally {
OfficeUtils.stopQuietly(officeManager);
}
- 该调用方式无法自动判断openoffice是否启动以及启动openoffice,所以需要自己保证服务器端的openoffice已经启动。
- 当前插件无法满足txt格式文本的pdf转换,txt文本可以用以下方式进行转换。
/**
* @param #textPath 源文件全路径
* @param #pdfPath pdf文件全路径
* @return #无
* @description #text转换pdf
* @remark #无
*/
private static void txtToPdf(String textPath,String pdfPath){
try {
// 设置纸张
Rectangle rect = new Rectangle(PageSize.A4);
// 设置页码
HeaderFooter footer = new HeaderFooter(new Phrase("页码:",
setChineseFont()), true);
footer.setBorder(Rectangle.NO_BORDER);
Document doc = new Document(rect, 50, 50, 50, 50);
doc.setFooter(footer);
InputStreamReader fileRead=new InputStreamReader(new FileInputStream(textPath)
,getCharset(textPath));
BufferedReader read = new BufferedReader(fileRead);
PdfWriter.getInstance(doc, new FileOutputStream(new File(pdfPath)));
doc.open();
while (read.ready()) {
doc.add(new Paragraph(read.readLine(),setChineseFont()));
}
doc.close();
}catch (Exception e){
GRGLogger.info("+++++++++++转换PDF失败 +++++++++++++++");
}
}