---恢复内容开始---
最近在做项目时需要写一个功能,将doc,ppt,xsl等文档做在线预览。网上查了很多资料,开始适用poi将文档转成pdf没成功,后来使用了OpenOffice4 + jodconverte2.2.2 + slf4j-jdk14-1.7.21,
jarbao版本一定要对,不然会报错,
首先安装Open Office4,导入jia包,下面直接上代码;
1 import java.io.File; 2 import java.io.FileNotFoundException; 3 import java.io.IOException; 4 import java.net.ConnectException; 5 6 import com.artofsolving.jodconverter.DocumentConverter; 7 import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection; 8 import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection; 9 import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter; 10 import com.thinkgem.jeesite.common.config.Global; 11 12 public class FileTransferUtils { 13 14 /** 15 * inputFile : 源文件路径<br> 16 * outputFile : 目标文件路径<br> 17 * suffix : 目标文件后缀 ".pdf" , ".html" etc 18 * */ 19 /*public static void main(String []args){ 20 office2PDF("D:\\test\\out.docx", "D:\\test\\", ".pdf"); 21 }*/ 22 public static void office2PDF(String inputFile,String outputFile,String suffix){ 23 try{ 24 File input = new File(inputFile); 25 if(!input.exists()){ 26 } 27 String filename = input.getName(); 28 String file = filename.substring(0, filename.lastIndexOf(".")); 29 System.out.println(file); 30 File output = new File(outputFile+file+suffix); 31 System.out.println(outputFile+file+suffix); 32 if(output.exists()){ 33 output.delete(); 34 } 35 36 String open_office_home = Global.getConfig("openoffice.path"); //这是我在项目中配置的 37 //String open_office_home ="你的openoffie安装路径"; 38 String command = open_office_home+ 39 "program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\""; //这条命令是通用的; 40 41 Process process = Runtime.getRuntime().exec(command); 42 43 OpenOfficeConnection connection =new SocketOpenOfficeConnection(); 44 connection.connect(); 45 DocumentConverter converter = new OpenOfficeDocumentConverter(connection); 46 converter.convert(input, output); 47 connection.disconnect(); 48 process.destroy(); 49 }catch(FileNotFoundException e){ 50 e.printStackTrace(); 51 }catch (ConnectException e) { 52 e.printStackTrace(); 53 }catch (IOException e) { 54 e.printStackTrace(); 55 } 56 } 57 }
以上就是我做office文档转pdf的经验,初次发博,欢迎指教
---恢复内容结束---