1、下载openoffice
官方地址:http://www.openoffice.org/
目前的最新版本是:Apache_OpenOffice_incubating_3.4.0_Win_x86_install_zh-CN.exe
2、启动openoffice
进入openoffice安装目录下的program目录
cd D:\Program\OpenOffice3\program
执行启动命令,让其监听8100端口
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
3、测试服务是否成功启动
运行netStat -app tcp,注意"-"后面没有空格,如果列表中找到TCP 127.0.0.1:8100 0.0.0.0 LISTENING,则表明启动成功
4、代码测试,用java 调用openoffice服务,将excel,word转为pdf
import java.io.*; import java.net.ConnectException; import javax.activation.MimeType; import org.junit.Test; import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry; import com.artofsolving.jodconverter.DocumentConverter; import com.artofsolving.jodconverter.DocumentFamily; import com.artofsolving.jodconverter.DocumentFormat; import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection; import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection; import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter; public class ExcelToPdf { public int DEFAULT_PORT = 8100; public String DEFAULT_HOST = "127.0.0.1"; /** * 执行前,请启动openoffice服务 * 进入$OO_HOME\program下 * 执行soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard * @param xlsfile * @param targetfile * @throws Exception */ public static void SaveAs(String xlsfile, String targetfile) throws Exception { File xlsf = new File(xlsfile); File targetF = new File(targetfile); // 获得文件格式 DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry(); DocumentFormat pdfFormat = formatReg.getFormatByFileExtension("pdf"); DocumentFormat xlsFormat = formatReg.getFormatByFileExtension("xls"); // stream 流的形式 InputStream inputStream = new FileInputStream(xlsf); OutputStream outputStream = new FileOutputStream(targetF); /** * */ OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100); System.out.println(connection); try { connection.connect(); DocumentConverter converter = new OpenOfficeDocumentConverter( connection); System.out.println("inputStream------" + inputStream); System.out.println("outputStream------" + outputStream); converter.convert(inputStream, xlsFormat, outputStream, pdfFormat); } catch (ConnectException e) { e.printStackTrace(); } finally { if (connection != null) { connection.disconnect(); connection = null; } } } @Test public void testXlsToPDF() throws Exception { String path1 = "D:/12.xls"; String path2 = "D:/1.pdf"; new ExcelToPdf().SaveAs(path1, path2); System.out.println("ok"); } }