java中 word 转 pdf 实现在线预览

实现的功能 :在线预览

这里通过 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值