通过OpenOffice转换PDF

package openoffice;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ConnectException;

import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry;
import com.artofsolving.jodconverter.DocumentConverter;
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 WordToPdf {
 
	public static int DEFAULT_PORT = 8100;
 
	public static 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 docFormat = formatReg.getFormatByFileExtension("doc");
		// 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, docFormat, outputStream, pdfFormat);
		} catch (ConnectException e) {
			e.printStackTrace();
		} finally {
			if (connection != null) {
				connection.disconnect();
				connection = null;
			}
		}
	}
 
	public static void main(String[] args){
		System.out.println("begin...");
//		String path1 = "D:/temp/111.doc";
//		String path2 = "D:/temp/111.pdf";
		try {
			SaveAs(path1, path2);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("ok!!!");
	}
	
}

Linux启动OpenOffice服务:

一、启动office转换为pdf服务器【openoffice server 】
1、进入openoffice安装目录
cd opeonofiice的安装路径/program
2、启动端口监听
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
3、查看启动是否成功,存在8100端口即启动成功
netstat -an
如下所示:
[root@localhost program]# netstat -an|more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             Stat
e     
tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LIST
EN     
tcp        0      0 127.0.0.1:8100              0.0.0.0:*                   LIST
EN     

Linux暂停OpenOffice服务:

进入命令行   ps -a
找到进openoffice进程ID
然后输入  kill  [进程ID]

 

jodconverter API:
http://jodconverter.sourceforge.net/api/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值