java+OpenOffice 实现office转成pdf
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Scanner; 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.StreamOpenOfficeDocumentConverter; public class Doc2PdfHtmlUtil { private static final String servicePath = "C:\\Program Files (x86)\\OpenOffice 4\\"; public static void main(String[] args) throws Exception { // startOpenOfficeService(); String file = "d:/33.pptx"; InputStream inputStream = new FileInputStream(new File(file)); file2pdf(inputStream, "d:/", "ppt"); // shutdownOpenOfficeService(); } /** * 转换文件成pdf * * @param fromFileInputStream: * @throws IOException */ public static String file2pdf(InputStream fromFileInputStream, String toFilePath, String type) throws Exception { String timesuffix = String.valueOf(System.currentTimeMillis()); String docFileName = null; String htmFileName = null; if ("doc".equals(type)) { docFileName = timesuffix.concat(".doc"); htmFileName = timesuffix.concat(".pdf"); } else if ("docx".equals(type)) { docFileName = timesuffix.concat(".docx"); htmFileName = timesuffix.concat(".pdf"); } else if ("xls".equals(type)) { docFileName = timesuffix.concat(".xls"); htmFileName = timesuffix.concat(".pdf"); } else if ("xlsx".equals(type)) { docFileName = timesuffix.concat(".xlsx"); htmFileName = timesuffix.concat(".pdf"); } else if ("ppt".equals(type)) { docFileName = timesuffix.concat(".ppt"); htmFileName = timesuffix.concat(".pdf"); } else if ("pptx".equals(type)) { docFileName = timesuffix.concat(".pptx"); htmFileName = timesuffix.concat(".pdf"); } else if ("txt".equals(type)) { docFileName = timesuffix.concat(".txt"); htmFileName = timesuffix.concat(".pdf"); } else { return null; } File htmlOutputFile = new File(toFilePath + File.separatorChar + htmFileName); File docInputFile = new File(toFilePath + File.separatorChar + docFileName); if (htmlOutputFile.exists()) { htmlOutputFile.delete(); } htmlOutputFile.createNewFile(); docInputFile.createNewFile(); /** * 由fromFileInputStream构建输入文件 */ int bytesRead = 0; byte[] buffer = new byte[1024]; OutputStream os = new FileOutputStream(docInputFile); while ((bytesRead = fromFileInputStream.read(buffer)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); fromFileInputStream.close(); OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100); connection.connect(); // convert DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection); converter.convert(docInputFile, htmlOutputFile); connection.disconnect(); // 转换完之后删除word文件 docInputFile.delete(); System.out.println("---------------执行完成---"); return htmFileName; } /** * 文件转换成Html * * @param fromFileInputStream * @param toFilePath * @param type * @return * @throws Exception */ public static String file2Html(InputStream fromFileInputStream, String toFilePath, String type) throws Exception { String timesuffix = String.valueOf(System.currentTimeMillis()); String docFileName = null; String htmFileName = null; if ("doc".equals(type)) { docFileName = timesuffix.concat(".doc"); htmFileName = timesuffix.concat(".html"); } else if ("docx".equals(type)) { docFileName = timesuffix.concat(".docx"); htmFileName = timesuffix.concat(".html"); } else if ("xls".equals(type)) { docFileName = timesuffix.concat(".xls"); htmFileName = timesuffix.concat(".html"); } else if ("xlsx".equals(type)) { docFileName = timesuffix.concat(".xlsx"); htmFileName = timesuffix.concat(".html"); } else if ("ppt".equals(type)) { docFileName = timesuffix.concat(".ppt"); htmFileName = timesuffix.concat(".html"); } else if ("pptx".equals(type)) { docFileName = timesuffix.concat(".pptx"); htmFileName = timesuffix.concat(".html"); } else if ("txt".equals(type)) { docFileName = timesuffix.concat(".txt"); htmFileName = timesuffix.concat(".html"); } else if ("pdf".equals(type)) { docFileName = timesuffix.concat(".pdf"); htmFileName = timesuffix.concat(".html"); } else { return null; } File htmlOutputFile = new File(toFilePath + File.separatorChar + htmFileName); File docInputFile = new File(toFilePath + File.separatorChar + docFileName); if (htmlOutputFile.exists()) { htmlOutputFile.delete(); } htmlOutputFile.createNewFile(); docInputFile.createNewFile(); /** * 由fromFileInputStream构建输入文件 */ int bytesRead = 0; byte[] buffer = new byte[1024 * 8]; OutputStream os = new FileOutputStream(docInputFile); while ((bytesRead = fromFileInputStream.read(buffer)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); fromFileInputStream.close(); OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100); connection.connect(); // convert DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection); converter.convert(docInputFile, htmlOutputFile); connection.disconnect(); // 转换完之后删除word文件 docInputFile.delete(); return htmFileName; } public static void startOpenOfficeService() { String command = servicePath + "program\\soffice -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\" -nofirststartwizard"; try { Process pro = Runtime.getRuntime().exec(command); } catch (IOException e) { System.out.println("OpenOffice服务启动失败"); } } /** *关闭代码 **/ public static void shutdownOpenOfficeService() { Scanner in = null; try { Process pro = Runtime.getRuntime().exec("tasklist"); in = new Scanner(pro.getInputStream()); while(in.hasNext()) { String proString = in.nextLine(); if(proString.contains("soffice.exe")) { String cmd = "taskkill /f /im soffice.exe"; pro = Runtime.getRuntime().exec(cmd); System.out.println("soffice.exe关闭"); } if(proString.contains("soffice.bin")) { String cmd = "taskkill /f /im soffice.bin"; pro = Runtime.getRuntime().exec(cmd); System.out.println("soffice.bin关闭"); } } } catch (IOException e) { e.printStackTrace(); } finally { if(in != null) { in.close(); } } } }
看完打开支付宝扫一扫领个红包吧!