仿百度文库方案[openoffice.org 3+swftools+flexpaper](三) 之 使用JODConverter将office文档转换为pdf

第三步,使用JODConverter将office文档转换为pdf

      JODConverter是一个java的OpenDucument文件转换器,可以进行许多文件格式的转换,它利用

OpenOffice来进行转换工作,它能进行以下的转换工作:

     1.Microsoft Office格式转换为OpenDucument,以及OpenDucument转换为Microsoft Office

     2.OpenDucument转换为PDF,Word、Excel、PowerPoint转换为PDF,RTF转换为PDF等。

它是一个开源项目。

 

笔者的项目是在MyEclipse下开发的。

下载最新版的jodconverter-2.2.2,把lib文件夹的包导入到你的DocConverter项目的lib文件夹内。

(假设你的项目是DocConverter)

新建DOC2PDFUtil.java

package com.iori.webapp.util;
import java.io.File;
import java.io.IOException;
import java.net.ConnectException;
import java.util.Date;

import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

public class DOC2PDFUtil extends java.lang.Thread {
private File inputFile;// 需要转换的文件
private File outputFile;// 输出的文件

public DOC2PDFUtil(File inputFile, File outputFile) {
this.inputFile = inputFile;
this.outputFile = outputFile;
}

public void docToPdf() {
Date start = new Date();

OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
try {
connection.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, outputFile);
} catch (ConnectException cex) {
cex.printStackTrace();
} finally {
// close the connection
if (connection != null) {
connection.disconnect();
connection = null;
}
}
}

/**
* 由于服务是线程不安全的,所以……需要启动线程
*/
public void run() {
this.docToPdf();
}

public File getInputFile() {
return inputFile;
}

public void setInputFile(File inputFile) {
this.inputFile = inputFile;
}

public File getOutputFile() {
return outputFile;
}

public void setOutputFile(File outputFile) {
this.outputFile = outputFile;
}

/**
* 测试main方法
*
@param args
*/
public static void main(String[] args) {
File inputFile = new File("c://temp//333.xls");
File outputFile = new File("c://temp//333.pdf");
DOC2PDFUtil dp=new DOC2PDFUtil(inputFile,outputFile);
dp.start();
}
}

在DOC2PDFUtil.java,右键属性 - >Run as - >Java Application ,输出main的测试结果。

 

在jsp中执行

新建MyDOC2PDFTest.jsp

<%@ page import="java.io.*"%>
<%@ page import="com.artofsolving.jodconverter.openoffice.connection.*"%>
<%@ page import="com.artofsolving.jodconverter.openoffice.connection.*"%>
<%@ page import="com.artofsolving.jodconverter.openoffice.converter.*"%>
<%@ page import="com.artofsolving.jodconverter.*"%>
<%@ page import="java.util.*"%>
<%@ page import="com.iori.webapp.util.*"%>

<%
File inputFile = new File("c://temp//333.xls");
File outputFile = new File("c://temp//333.pdf");
DOC2PDFUtil dp=new DOC2PDFUtil(inputFile,outputFile);
dp.start();
%>
<!-- 下面这些html可以去掉 -->
<html>
<head><title>Simple jsp page</title></head>
<body>Place your content here</body>
</html>

在项目DocConverter根目录,右键属性 - >Run as - >MyEclipse Server Application

发布到之前安装的Tomcat 6.0的根目录,然后用url路径访问:Http://localhost:8080/DocConverter/MyDOC2PDFTest.jsp 进行测试。

 

JODConverter将office文档转换pdf,用到的代码如下:

File inputFile = new File("c://temp//333.xls");
File outputFile = new File("c://temp//333.pdf");

// 链接 一个运行在8100端口的OpenOffice.org 实例
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
connection.connect();

// 创建一个converter对象并转换格式
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, outputFile);

// 关闭连接
connection.disconnect();



posted on 2011-12-09 16:38  林枫山  阅读(13200)  评论(11编辑  收藏  举报