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");
}
}