Java如何把文件轉換成PDF
阿新 • • 發佈:2019-01-28
分享知識 傳遞快樂
1、先在網上下載OpenOffice,並安裝。
2、引入以下jar:
- commons-cli-1.1.jar
- commons-io-1.4.jar
- jodconverter-core-3.0-beta-4.jar
- juh-3.2.1.jar
- jurt-3.2.1.jar
- ridl-3.2.1.jar
- unoil-3.2.1.jar
如果有新的jar,也可以引入新的jar。
程式碼如下:
package com.singleton; import java.io.File; import org.artofsolving.jodconverter.OfficeDocumentConverter; import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration; import org.artofsolving.jodconverter.office.OfficeManager; import com.xh.Constant; /** * * @author H.Yang * @date 2017年9月8日 */ public class SingleOpenOffice { private static SingleOpenOffice start = new SingleOpenOffice(); private static OfficeManager officeManager; // 獲取唯一可用的物件 public static SingleOpenOffice getStart() { DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration(); System.out.println("準備啟動服務...."); configuration.setOfficeHome(FileSuffixType.FILEPATH.getName()); // 設定OpenOffice.org安裝目錄 configuration.setPortNumber((int) FileSuffixType.PORT.getValue()); // 設定轉換埠,預設為8100 configuration.setTaskExecutionTimeout(Long.valueOf(String.valueOf(FileSuffixType.EXECUTE_OVERTIME.getValue()))); configuration.setTaskQueueTimeout(Long.valueOf(String.valueOf(FileSuffixType.QUEUE_OVERTIME.getValue()))); officeManager = configuration.buildOfficeManager(); officeManager.start(); // 啟動服務 System.out.println("office服務啟動成功!"); return start; } /** * 文件轉換 * <hr> * 將doc,docx,xls,xlsx,ppt,pptx,txt等文件轉換成PDF文件,如果不指定輸出地址預設當前檔案地址 * * @author H.Yang * @date 2016年12月13日 * @explain * * @param inputFilePath * - 轉換檔案地址(必須) * @param outputFilePath * - 輸出地址(可空) * @param newFileName * - 新檔名(可空) * @return */ public String execute2Pdf(String inputFilePath, String outputFilePath, String newFileName) { File inputFile = new File(inputFilePath); String fileName = inputFile.getName(); String prefix = fileName.substring(fileName.lastIndexOf(".") + 0); String outputPath = null; boolean isTrue = false; if (!inputFile.exists()) { System.out.println("檔案不存在!"); return null; } for (String name : Constant.FILE_SUFFIX) { if (fileName.endsWith(name)) { isTrue = true; break; } } if (!isTrue) { System.out.println("檔案格式錯誤"); return null; } if (outputFilePath != null) { outputPath = newFileName == null ? outputFilePath + fileName.replace(prefix, Constant.PDF_SUFFIX) : outputFilePath + fileName.replace(fileName, newFileName) + Constant.PDF_SUFFIX; } else { outputPath = newFileName == null ? inputFile.getPath().replace(prefix, Constant.PDF_SUFFIX) : inputFile.getPath().replace(fileName, newFileName) + Constant.PDF_SUFFIX; } File outputFile = new File(outputPath); if (!outputFile.exists()) { // 執行方法服務功能 execute(inputFile, outputFile); } else { System.out.println("檔案已存在"); } return outputPath; } /** * 執行方法服務功能 * * @author H.Yang * @date 2016年12月13日 * @explain * * @param inputFile * @param outputFile */ private static void execute(File inputFile, File outputFile) { long startTime = System.currentTimeMillis();// 獲取開始時間 try { System.out.println("進行文件轉換轉換:" + inputFile + " --> " + outputFile); OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager); converter.convert(inputFile, outputFile); System.out.println("Office轉換成功"); } catch (Exception e) { getStop(); e.printStackTrace(); } long endTime = System.currentTimeMillis(); // 獲取結束時間 System.out.println("程式執行時間: " + (endTime - startTime) / 1000 + "s"); } public static void getStop() { if (officeManager != null) { officeManager.stop(); } System.out.println("office關閉成功!"); } }
如有不足或新的想法請留言--分享知識 傳遞快樂。