* 以前的代碼以及下載文件有誤,以下是我重新修改以及測試過的。完全沒問題!!!!!!!!!!!!!!
如果在使用我的代碼的時候出現任何問題,請及時聯系我 qq:2587912906 請備注:"博客園" !!!!!!!!!!
1. 下載 openoffice 地址
https://pan.baidu.com/s/16dD30NohM6PbCvBrEdnLsw 密碼: t5vy
如果上面的地址無法訪問請訪問這個地址:下載地址如下:http://www.openoffice.org/ 下載最新版本
下載文件中包括下面需要的 所有的jar 包,請放心下載!!!!!!!!!
2. jodconverter-2.2.2.zip :
解壓后的jar包:

3. jodconverter-core-3.0-beta-4.jar :
jodconverter-core-3.0-beta-4.jar 這個jar包也在上面的文件中。
4. 接下來我將講解如果是在maven 項目中使用openoffice 的時候jar 包引入的正確方式。因為我在上面提到的jar包 從maven庫中下載不了。
(1)准備我在上面提到的 jar 包。
(2)在你maven項目中的pom.xml文件中引入如下幾個依賴。
<dependency>
<groupId>com.artofsolving</groupId>
<artifactId>jodconverter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.openoffice</groupId>
<artifactId>jurt</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.openoffice</groupId>
<artifactId>ridl</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.openoffice</groupId>
<artifactId>juh</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.openoffice</groupId>
<artifactId>unoil</artifactId>
<version>3.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.artofsolving.jodconverter/jodconverter-core -->
<dependency>
<groupId>org.artofsolving.jodconverter</groupId>
<artifactId>jodconverter-core</artifactId>
<version>3.0-beta-4</version>
</dependency>
* 記住:這些依賴不在maven庫中,所以你引入的時候是無法下載的。請仔細看我是如何做到的!!!!!!!!!!
引入如上幾個依賴后雖然無法下載jar包,但是可以創建對應版本的文件夾。比如:

(3)接下來找到我在上面給的依賴的對應的jar包(jar包都在我給的下載地址中的文件夾中),並把jar包放進對應的地址中。
放進去后最后一個步驟:在你jar 包所在目錄中 創建跟你jar包同名的 .pom 文件。 比如:jar包是 jodconverter-core-3.0-beta-4.jar ,那么你需要創建同名的 jodconverter-core-3.0-beta-4.pom 文件。
這個必須要加進去,不然等下你刷新pom 文件的時候還是無法下載依賴。
5. 完成上面所有的步驟后按照下面的操作圖操作就可以完美的解決依賴問題了。

點擊圖中的刷新按鈕,idea 就會重新下載依賴了。多刷新幾次,如果還有出現跟我一樣的報錯,請重啟idea 問題就會解決了。
如果還是無法解決,請聯系我!!!!!!!!!!!
6. 使用openoffice的工具類
package com.rdkl.utils;
import java.io.File;
import org.apache.commons.io.FilenameUtils;
import org.apache.log4j.Logger;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.ExternalOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeException;
import org.artofsolving.jodconverter.office.OfficeManager;
import com.ddyun.imooc.common.SysConfigManager;
public class PdfUtils {
private static final Logger logger = Logger.getLogger(PdfUtils.class
.getName());
@SuppressWarnings("static-access")
private static String officeHome = ""; //這里寫的是你的openoffice的安裝地址,如果你在安裝openOffice 的時候選擇的是默認安裝,那么地址是:C:/Program Files (x86)/OpenOffice 4/。
//如果是自定義的安裝方式,請填寫自定義安裝路徑。
@SuppressWarnings("static-access") private static int port = 8100;//這里的內容是根據你的系統選擇不同的端口號,windows系統的端口號是8100
private static OfficeManager officeManager; // 嘗試連接已存在的服務器 private static boolean reconnect(){ try {
// 嘗試連接openoffice的已存在的服務器 ExternalOfficeManagerConfiguration externalProcessOfficeManager = new ExternalOfficeManagerConfiguration(); externalProcessOfficeManager.setConnectOnStart(true); externalProcessOfficeManager.setPortNumber(8100); officeManager = externalProcessOfficeManager.buildOfficeManager(); officeManager.start(); return true; } catch (OfficeException e) { e.printStackTrace(); return false; } } // 開啟新的openoffice的進程 private static void start() { logger.debug("啟動OpenOffice服務"); try { DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration(); configuration.setOfficeHome(officeHome);// 安裝地址 configuration.setPortNumbers(port);// 端口號 configuration.setTaskExecutionTimeout(1000 * 60 * 5);// 設置任務執行超時為5分鍾 configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24);// 設置任務隊列超時為24小時 officeManager = configuration.buildOfficeManager(); officeManager.start(); // 啟動服務 } catch (Exception e) { logger.error("啟動OpenOffice服務出錯" + e); } } // 使用完需要關閉該進程 private static void stop() { logger.debug("關閉OpenOffice服務"); try { if (officeManager != null) officeManager.stop(); } catch (Exception e) { logger.error("關閉OpenOffice服務出錯" + e); } } public static File convertToPdf(String input) { File inputFile = null; File outFile = null; try {
// 如果已存在的服務不能連接或者不存在服務,那么開啟新的服務 if(!reconnect()){ start();// 開啟服務 }
// filenameUtils是Apache對java io的封裝。 FilenameUtils.separatorsToSystem:轉換分隔符為當前系統分隔符 / FilenameUtils.getFullPath:獲取文件的完整目錄
// FilenameUtils.getBaseName:取出文件目錄和后綴名的文件名 String output = FilenameUtils.separatorsToSystem(FilenameUtils.getFullPath(input) + FilenameUtils.getBaseName(input) + ".pdf"); inputFile = new File(input); outFile = new File(output); logger.info("開始轉換文檔:" + input + "=>" + output); OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager); converter.convert(inputFile,outFile); // 轉換文檔 } catch (Exception e) { logger.error("轉換文檔出錯" + e); outFile = null; }finally{ logger.info("結束轉換文檔"); stop(); } return outFile; }
// 測試工具類是否成功 public static void main(String[] args) { //PdfUtils.convertToPdf("E:/test.ppt"); File sf = new File("E:/test.ppt"); System.out.println(sf.getPath()); } }
*題外話:如果有哪位朋友需要學習資料的可以聯系我(qq:2587912906, 請備注:‘博客園’。)
資料包括:
1(大數據 視頻教程)
2(微信小程序 視頻教程)
3(vue 前端框架視頻教程)
4(Angular 前端框架視頻教程)
5(Springboot 視頻教程)
6(SpringCloud 視頻教程)
7 (Shiro 整合spring 視頻教程)
8(netty 即時通訊 視頻教程)
9(hibernate 視頻教程)
10 (solr 視頻教程)
11 (Maven+CMS+Redis+Solr+Linux+Nginx+Springmvc+Mybatis+單點登錄,大型分布式項目 視頻教程)
12 (java、mysql、redis、web前端開發、springboot、springcloud、大數據、jquery、linux、solr 等技術的 .pdf 文件)
