实现的功能 :在线预览
这里通过 openOffice 插件, 本地 在window 系统中 安装的
windowan安装
启动命令 soffice.exe -headless -accept=“socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard
代码:
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
import java.io.File;
import java.io.IOException;
public class WordToPDF {
// 将word格式的文件转换为pdf格式
public static void WordToPDF(String startFile, String overFile) throws IOException {
// 源文件目录
File inputFile = new File(startFile);
if (!inputFile.exists()) {
System.out.println("源文件不存在!");
return;
}
// 输出文件目录
File outputFile = new File(overFile);
if (!outputFile.getParentFile().exists()) {
outputFile.getParentFile().exists();
}
// 调用openoffice服务线程
/** 我把openOffice下载到了 C:/Program Files (x86)/下 ,下面的写法自己修改编辑就可以**/
//String command = "D:/Program Files (x86)/OpenOffice 4/program/soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\" -nofirststartwizard";
//Process p = Runtime.getRuntime().exec(command);
// 连接openoffice服务
OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
connection.connect();
// 转换
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, outputFile);
// 关闭连接`
connection.disconnect();
// 关闭进程
//p.destroy();
}
public static void main (String args[]){
String start = "e:\\emis\\我是word测试文件.docx";
String over = "e:\\emis\\成了.pdf";
try {
WordToPDF(start, over);
} catch (IOException e) {
e.printStackTrace();
}
}
其中 引入 com.artofsolving.jodconverter jar包版本 为 2.2.2 之前版本为2.2.1 所以 连接不上openOffice
openoffice linux 安装 、
2.1、OpenOffice安装及部署
将 Apache_OpenOffice_4.1.5_Linux_x86-64_install-rpm_zh-CN.tar.gz 安装包上传
解压安装包: tar -zxvf Apache_OpenOffice_4.1.5_Linux_x86-64_install-rpm_zh-CN.tar.gz
安装OpenOffice服务
cd zh-CN/RPMS
rpm -ivh *.rpm --force --nodeps
cd desktop-integration
rpm -ivh *.rpm --force --nodeps
2.2、启动OpenOffice服务
放入后台永久运行OpenOffice服务
nohup /opt/openoffice4/program/soffice -headless -accept=“socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard &
查看OpenOffice服务是否已启动
netstat -lnp | grep 8100
netstat -tln
如8100端口未启动(上步操作启动成功则忽略下续操作)
查看OpenOffice错误信息: openoffice4
出现: /opt/openoffice4/program/soffice.bin: error while loading shared libraries: libXext.so.6: cannot open shared object file: No such file or directory
执行: yum install libXext.x86_64
出现: /opt/openoffice4/program/soffice.bin: error while loading shared libraries: libfreetype.so.6: cannot open shared object file: No such file or directory
执行: yum install freetype
出现: no suitable windowing system found, exiting.
执行: yum groupinstall “X Window System”
直至输入openoffice4没有错误提示为止
2.3、OpenOffice格式转换中文乱码(如果预览文件无法识别中文,执行该步骤)
查看jdk安装路径: ls -lrt /etc/alternatives/java
进入jdk安装路径: cd usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/bin/java
再进入jre/lib目录: cd jre/lib/
创建fonts目录: mkdir fonts
进入该路径: cd fonts
创建fallback目录: mkdir fallback
进入该路径: cd fallback
在该路径下上传字体文件simsun.ttc(宋体)、simhei.ttf(黑体)字体文件(如需其他字体支持继续上传)
查看系统字体文件路径: cat /etc/fonts/fonts.conf
字体拷贝: 将 usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/bin/fonts的全部内容,拷贝到系统字体文件路径下(我的字体路径为:/usr/share/fonts)
更新缓存: fc-cache