我轉化pdf的目的是把用戶上傳的文檔轉pdf以作在線預覽功能。
第一步需要下一個Apache_OpenOffice插件,沒有它實現不了轉化。
默認安裝,
/**
* 在此之前需先開啟openoffice服務,用命令行打開cd C:\Program Files\OpenOffice.org 3\program (openoffice安裝的路徑)
* 輸入 soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
*/開啟Apache_OpenOffice服務
第二步項目引入Apache_OpenOffice相關jar包
<!-- 文檔 -->
<dependency>
<groupId>com.github.livesense</groupId>
<artifactId>jodconverter-core</artifactId>
<version>1.0.5</version>
</dependency>
jodconverter-2.2.2可以把docx,xlsx轉pdf,mvn好像不能自動下來,需要手動引入
package ax.tst.common.util;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;
import java.io.File;
import java.io.FileNotFoundException;
/**
* @ClassName OpenOffice2PdfUtils
* @Description
* @Author: dsh
* @Date: 2019/12/20 14:58
* @Version V1.0
**/
//轉換文檔為pdf
public class OpenOffice2PdfUtils {
/**
* @param args
*/
private static OfficeManager officeManager;
private static String OFFICE_HOME = "C:/Program Files (x86)/OpenOffice 4/";//C:\Program Files (x86)
private static int port[] = { 8100 };
public static void convert2PDF(File inputFile, String outputFile) throws FileNotFoundException {//File file, String pdfUrl
startService();
System.out.println("進行文檔轉換轉換:" + inputFile + " --> " + outputFile);
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
converter.convert(inputFile, new File(outputFile));
stopService();
System.out.println();
}
// 打開服務器
public static void startService() {
DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
try {
System.out.println("准備啟動服務....");
configuration.setOfficeHome(OFFICE_HOME);// 設置OpenOffice.org安裝目錄
configuration.setPortNumbers(port); // 設置轉換端口,默認為8100
configuration.setTaskExecutionTimeout(1000 * 60 * 5L);// 設置任務執行超時為5分鍾
configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);// 設置任務隊列超時為24小時
officeManager = configuration.buildOfficeManager();
officeManager.start(); // 啟動服務
System.out.println("office轉換服務啟動成功!");
} catch (Exception ce) {
System.out.println("office轉換服務啟動失敗!詳細信息:" + ce);
}
}
// 關閉服務器
public static void stopService() {
System.out.println("關閉office轉換服務....");
if (officeManager != null) {
officeManager.stop();
}
System.out.println("關閉office轉換成功!");
}
public static void main(String[] args) throws Exception {
String path = "E:/";
OpenOffice2PdfUtils opc = new OpenOffice2PdfUtils();
// opc.convert2PDF(path+"8dd29733248744e5a59b4027f92dbf8c.pptx", path+"1.pdf");
// opc.convert2PDF(path+"工作梳理.docx", path+"2.pdf");
// opc.convert2PDF(path+"班組安全島手機端詳細設計方案V1.1.docx", path+"3.pdf");
}
}