springboot windows下WORD文档转PDF

windows环境下word转PDF

一、安装openoffice

我自己在官网上下载openoffice的windows版本和linux版本都非常慢,这里我提供一下我的云盘链接(windows版本),方便下载 https://pan.baidu.com/s/1HKrN9x_ogvzpDt0PUHr3mw 提取码 g3ee。我自己是安装在E:\LibreOffice目录下。

二、springboot依赖导入

注意 :jodconverter 2.2.1 不支持docx和xlsx等格式 而jodconverter 2.2.2版本是支持。但是jodconverter 2.2.2 在maven仓库是找到不到的,我也是找了半天才找到个免费的,也通过云盘提供出来,https://pan.baidu.com/s/1a-VGljgQQaeN3-gUh60ZCg 提取码 rhf8。

第一步:添加如下依赖
	  <dependency>
		  <groupId>org.openoffice</groupId>
		  <artifactId>unoil</artifactId>
		  <version>4.1.2</version>
	  </dependency>

	  <!-- https://mvnrepository.com/artifact/org.openoffice/ridl -->
	  <dependency>
		  <groupId>org.openoffice</groupId>
		  <artifactId>ridl</artifactId>
		  <version>4.1.2</version>
	  </dependency>

	  <!-- https://mvnrepository.com/artifact/org.openoffice/jurt -->
	  <dependency>
		  <groupId>org.openoffice</groupId>
		  <artifactId>jurt</artifactId>
		  <version>4.1.2</version>
	  </dependency>

	  <!-- https://mvnrepository.com/artifact/org.openoffice/juh -->
	  <dependency>
		  <groupId>org.openoffice</groupId>
		  <artifactId>juh</artifactId>
		  <version>4.1.2</version>
	  </dependency>

	  <!-- https://mvnrepository.com/artifact/org.libreoffice/officebean -->
	  <dependency>
		  <groupId>org.libreoffice</groupId>
		  <artifactId>officebean</artifactId>
		  <version>6.3.2</version>
	  </dependency>
第二步:手动添加 jodconverter-2.2.2依赖

将jodconverter-2.2.2.jar包放在E盘下。在idea Terminal下输入mvn install:install-file -Dfile=E:\jodconverter-2.2.2.jar -DgroupId=com.artofsolving -DartifactId=jodconverter -Dversion=2.2.2 -Dpackaging=jar
然后在pom文件中添加

<dependency>
	<groupId>com.artofsolving</groupId>
	<artifactId>jodconverter</artifactId>
	<version>2.2.2</version>
</dependency>
三、编码

编写一个工具类FileUtils,其中openOpen方法是在windows环境下执行开启openoffice一个进程

public static void openOffice(String ip, int port) {
	try {
		Properties prop = System.getProperties();
		String os = prop.getProperty("os.name");
		//openOffice的安装路径
		String command = "E:\\LibreOffice\\program\\soffice.exe -headless -accept=\"socket,host=" + ip +",port="+port+";urp;\"";
		if (os != null && os.toLowerCase().indexOf("windows") > -1) {
			Process pro = Runtime.getRuntime().exec(command);
		} 
	} catch (Exception e) {
		e.printStackTrace();
	}
}

其中Office2Pdf方法是转换word文档为PDF的业务逻辑代码,根据自己的需求编写。本地环境下就使用127.0.0.1 8100

public static String Office2Pdf(File file, String ip, int port){
	//启动服务
	openOpenOffice(ip, port);
	/*支持txt docx pptx ppt doc xlsx xls  转pdf*/
	//判断源文件是否存在
	if (!file.exists()){
		throw new RuntimeException("源文件不存在!");
	}
	String newPath = "E:/offices/" + file.getName().substring(0,file.getName().lastIndexOf("."));
	// 输出文件目录
	File outputFile = new File(newPath+".pdf");
	// 创建openoffice服务连接 127.0.0.1 8100
	OpenOfficeConnection connection = new SocketOpenOfficeConnection(ip, port);
	try {
		//连接OpenOffice服务
		connection.connect();
		//创建文件转换器
		DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);
		//开始转换
		converter.convert(file, outputFile);
		if (outputFile.exists()){
			System.out.println("文件转换成功!");
			return s;
		}
	} catch (ConnectException e) {
		e.printStackTrace();
		throw new RuntimeException("OpenOffice服务启动失败!");
	}finally {
		//关闭连接
		connection.disconnect();
	}
	return outputFile.getAbsolutePath();
}
四、application.properties配置

正式环境的port为8087,在下一篇博文中设置https://blog.csdn.net/qq_27576109/article/details/106635213。IP 都设置为127.0.0.1。在调用 openOffice方法时,传入IP和port即可。
pdf-ip=127.0.0.1
pdf-port=8100

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值