openoffice 转 pdf

安装OpenOffice3.2 ,window 下启动服务(.bat):

cd /d D:\OpenOffice3.2\OpenOffice.org 3\program
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

 

必须jar包:

 

 

  jodconverter-2.2.1.jar 
  jurt-2.3.0.jar 
  xstream-1.2.2.jar 
  ridl-2.3.0.jar 
  commons-io-1.3.1.jar 
  juh-2.3.0.jar 
  slf4j-api-1.4.3.jar 
  unoil-2.3.0.jar 
  slf4j-jdk14-1.4.3.jar 

 

测试代码:

 

package com.dianyitech.demo.madaptor.common;

import java.io.File;
import java.io.FileOutputStream;
import java.net.ConnectException;

import org.apache.log4j.Logger;

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;
import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;

/**
 * 转pdf 类
 * @author chenluozhi
 * @data Dec 13, 2012   
 * @Description ...
 * @version 1.0
 */
public class ConvertX2PDFHelper {
	
	public static final Logger logger  = Logger.getLogger(ConvertX2PDFHelper.class);
	
	public final static int DEFAULT_WIDTH = 600;
	
	private static OpenOfficeConnection connection  = null;
	
	public static void officeToPdf(File srcFile,File destFile){
		try {
			OpenOfficeConnection connection = getConnection();
			DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
			String fileExt = "";
			String fileName = srcFile.getName();
			int i = fileName.indexOf(".");
			if(i != -1){
				fileExt = fileName.substring(i+1);
			}
			if("wps".equalsIgnoreCase(fileExt)){				
				DocumentFormat df = new DocumentFormat("Kingsoft wps", DocumentFamily.TEXT, "application/wps", "wps");
				DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();
				DocumentFormat pdf = formatReg.getFormatByFileExtension("pdf");
				converter.convert(srcFile, df,destFile,pdf);
			}
			else if("et".equalsIgnoreCase(fileExt)){				
				DocumentFormat df = new DocumentFormat("Kingsoft et", DocumentFamily.TEXT, "application/et", "et");
				DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();
				DocumentFormat pdf = formatReg.getFormatByFileExtension("pdf");
				converter.convert(srcFile, df,destFile,pdf);
			}
			else if("dps".equalsIgnoreCase(fileExt)){				
				DocumentFormat df = new DocumentFormat("Kingsoft dps", DocumentFamily.TEXT, "application/dps", "dps");
				DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();
				DocumentFormat pdf = formatReg.getFormatByFileExtension("pdf");
				converter.convert(srcFile, df,destFile,pdf);
			}
			else{
				converter.convert(srcFile,destFile);
			}
			String osname = System.getProperty("os.name");
			if (osname.indexOf("Windows") > -1 ){
				connection.disconnect();
			}
		} catch (ConnectException e) {
			logger.error("officeToPdf error:",e);
		}	
	}

	
	private static OpenOfficeConnection getConnection() throws ConnectException {
		if (connection == null || !connection.isConnected()){
			connection = new SocketOpenOfficeConnection("127.0.0.1",8100);							
			connection.connect();
		}
		return connection;
	}
	
	
	
	
	public static void imageToPdf(String image,File pdf){
	       Document document = new Document(PageSize.A4, 36, 36, 36, 36);
	       try 
	       {
	          PdfWriter writer = PdfWriter.getInstance(document,
	             new FileOutputStream(pdf));
	          document.open();
	          PdfContentByte cb = writer.getDirectContent();
	          Image img = Image.getInstance(image);
	            if (img != null) {        
	              img.setAbsolutePosition(0, 0);
	            	img.scaleAbsolute(595, 838);// 控制图片大小

					 cb.addImage(img);
					 document.newPage();
	            }
	          document.close();
	          } 
	          catch (Throwable e) {
	        	  logger.error("image转pdf错误:",e);
	          }
		}
	
	
	public static void main(String []s){
		File office =  new File("c:/test.doc");
		File pdf =  new File("c:/test.pdf");
		ConvertX2PDFHelper.officeToPdf(office, pdf);
	}
	
	

	
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值