java将office文档pdf文档转换成swf文件在线预览.docx

上传人:b****8 文档编号:9872602 上传时间:2023-02-07 格式:DOCX 页数:34 大小:25.82KB
下载 相关 举报
java将office文档pdf文档转换成swf文件在线预览.docx_第1页
第1页 / 共34页
java将office文档pdf文档转换成swf文件在线预览.docx_第2页
第2页 / 共34页
java将office文档pdf文档转换成swf文件在线预览.docx_第3页
第3页 / 共34页
java将office文档pdf文档转换成swf文件在线预览.docx_第4页
第4页 / 共34页
java将office文档pdf文档转换成swf文件在线预览.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

java将office文档pdf文档转换成swf文件在线预览.docx

《java将office文档pdf文档转换成swf文件在线预览.docx》由会员分享,可在线阅读,更多相关《java将office文档pdf文档转换成swf文件在线预览.docx(34页珍藏版)》请在冰豆网上搜索。

java将office文档pdf文档转换成swf文件在线预览.docx

java将office文档pdf文档转换成swf文件在线预览

java将office文档pdf文档转换成swf文件在线预览

第一步,安装openoffice.org

 openoffice.org是一套sun的开源office办公套件,能在widows,linux,solaris等操作系统上执行。

主要模块有writer(文本文档),impress(演示文稿),Calc(电子表格),Draw(绘图),Math(公式),base(数据库)

笔者下载的是openoffice.org3.3.0。

下载完直接安装即可。

 

    但是,我们还需要启动openofficeserver。

有两种做法:

   1.以命令行方式启动openofficeserver,缺点是每次系统重启,都需要手动去把openofficeserver启动。

   2.将openofficeserver作为操作系统的服务启动,既然成为了系统服务,就可以设定开机自动启动了。

   我们先来看第一种方式,

1.以命令行方式启动openofficeserver

  在cmd命令下,cdopeonofiice的安装路径/program如:

cdc:

\programfiles\openoffice.org3\program\soffice-headless-accept="socket,host=127.0.0.1,port=8100;urp;"-nofirststartwizard

 

2.以系统服务的方式启动

   这里我们还需要WindowsResourceKittools,将openofficeserver设为系统服务。

WindowsResourceKittools是微软专为管理人员、开发人员和高级用户开发的,包括管理活动目录、组策略、TCP/IP网络、注册表、系统安全、监测等涉及WindowsServer2003操作系统的其它很多方面的非常规安装的工具组件。

ResourceKitToolsforXP的发布使得XP用户也能使用ResourceKitTools对这些问题进行处理。

   下载windowsresourcekittools,我们进行默认安装。

    1.打开WindowsResourceKitTools

    在CommandShell执行以下命令:

 "C:

\ProgramFiles\WindowsResourceKits\Tools\instsrv"OpenOfficeUnoServer"C:

\ProgramFiles\WindowsResourceKits\Tools\srvany.exe"

打开管理工具->服务可以找到以OpenOfficeUnoServer命名的服务

   2.打开注册表寻找以下路径

   HKEY_LOCAL_MACHINE->SYSTEM->ControlSet001->Services->OpenOfficeUnoServer

  新建项Parameters,在该项下添加两个字符串值:

  key:

Application

    value:

C:

\ProgramFiles\OpenOffice.org3\program\soffice.exe

 

    key:

AppParameters

     value:

-invisible-headless-accept=socket,host=127.0.0.1,port=8100;urp;-nofirststartwizard

 

    3.在服务控制台,启动openoffice服务

    4.在CMD中用以下命令查看8100是否已被监听:

netstat-anoptcp

这样OpenOffice3.0就以服务方式运行在Windows系统上了。

(使用cmd命令:

netstat-anptcp查看8100端口是否工作)

然後可以通过socket方式连接openOffice,以使用openoffice提供的某些服务,如文件转换服务,msoffice转pdf等等。

开源项目JODConverter就是结合openoffice来进行文档转换的java组件。

另外有一个命令行工具swftools,该工具可以将pdf转换为swf格式的文档,提供给ie客戶端流览。

    

  另外,我们可以将该配置用bat文件来快速实现,运行前请先修改相应目录参数:

    openofficeservice.bat文件

   "C:

\ProgramFiles\WindowsResourceKits\Tools\instsrv"OpenOfficeUnoServer"C:

\ProgramFiles\WindowsResourceKits\Tools\srvany.exe"

   regaddHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\OpenOfficeUnoServer\Parameters/ve/d

   regaddHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\OpenOfficeUnoServer\Parameters/vApplication/tREG_SZ/d"C:

\ProgramFiles\OpenOffice.org3\program\soffice.exe"

   regaddHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\OpenOfficeUnoServer\Parameters/vAppParameters/tREG_SZ/d"-invisible-headless-accept=socket,host=127.0.0.1,port=8100;urp;-nofirststartwizard"

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

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

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

    1.MicrosoftOffice格式转换为OpenDucument,以及OpenDucument转换为MicrosoftOffice

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

它是一个开源项目。

 

我的项目是在MyEclipse下开发的。

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

(假设你的项目是DocConverter)

新建DOC2PDFUtil.java

packagecom.iori.webapp.util;

importjava.io.File;

importjava.io.IOException;

import.ConnectException;

importjava.util.Date;

importcom.artofsolving.jodconverter.DocumentConverter;

importcom.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;

importcom.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;

importcom.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

publicclassDOC2PDFUtilextendsjava.lang.Thread{

privateFileinputFile;//需要转换的文件

privateFileoutputFile;//输出的文件

publicDOC2PDFUtil(FileinputFile,FileoutputFile){

this.inputFile=inputFile;

this.outputFile=outputFile;

}

publicvoiddocToPdf(){

Datestart=newDate();

OpenOfficeConnectionconnection=newSocketOpenOfficeConnection(8100);

try{

connection.connect();

DocumentConverterconverter=newOpenOfficeDocumentConverter(connection);

converter.convert(inputFile,outputFile);

}catch(ConnectExceptioncex){

cex.printStackTrace();

}finally{

//closetheconnection

if(connection!

=null){

connection.disconnect();

connection=null;

}

}

}

/**

*由于服务是线程不安全的,所以……需要启动线程

*/

publicvoidrun(){

this.docToPdf();

}

publicFilegetInputFile(){

returninputFile;

}

publicvoidsetInputFile(FileinputFile){

this.inputFile=inputFile;

}

publicFilegetOutputFile(){

returnoutputFile;

}

publicvoidsetOutputFile(FileoutputFile){

this.outputFile=outputFile;

}

/**

*测试main方法

*@paramargs

*/

publicstaticvoidmain(String[]args){

FileinputFile=newFile("c:

//temp//333.xls");

FileoutputFile=newFile("c:

//temp//333.pdf");

DOC2PDFUtildp=newDOC2PDFUtil(inputFile,outputFile);

dp.start();

}

}

在DOC2PDFUtil.java,右键属性->Runas->JavaApplication,输出main的测试结果。

在jsp中执行

新建MyDOC2PDFTest.jsp

<%@pageimport="java.io.*"%>

<%@pageimport="com.artofsolving.jodconverter.openoffice.connection.*"%>

<%@pageimport="com.artofsolving.jodconverter.openoffice.connection.*"%>

<%@pageimport="com.artofsolving.jodconverter.openoffice.converter.*"%>

<%@pageimport="com.artofsolving.jodconverter.*"%>

<%@pageimport="java.util.*"%>

<%@pageimport="com.iori.webapp.util.*"%>

<%

FileinputFile=newFile("c:

//temp//333.xls");

FileoutputFile=newFile("c:

//temp//333.pdf");

DOC2PDFUtildp=newDOC2PDFUtil(inputFile,outputFile);

dp.start();

%>

--下面这些html可以去掉-->

Simplejsppage

Placeyourcontenthere

在项目DocConverter根目录,右键属性->Runas->MyEclipseServerApplication

发布到之前安装的Tomcat6.0的根目录,然后用url路径访问:

Http:

//localhost:

8080/DocConverter/MyDOC2PDFTest.jsp 进行测试。

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

FileinputFile=newFile("c:

//temp//333.xls");

FileoutputFile=newFile("c:

//temp//333.pdf");

//链接一个运行在8100端口的OpenOffice.org实例

OpenOfficeConnectionconnection=newSocketOpenOfficeConnection(8100);

connection.connect();

//创建一个converter对象并转换格式

DocumentConverterconverter=newOpenOfficeDocumentConverter(connection);

converter.convert(inputFile,outputFile);

//关闭连接

connection.disconnect();

第三步,使用swftools将pdf转换为swf

建议下载swftools-0.9.1,笔者起先下载的是最新版的swftools-1.0版。

貌似转换时出错,缺少什么组件。

    继续笔者的DocConverter项目。

笔者使用的开发环境是MyEclipse9.0。

新建PDF2SWFUtil.java

packagecom.iori.webapp.util;

importjava.io.BufferedReader;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.InputStreamReader;

publicclassPDF2SWFUtil{

/**

*利用SWFTools工具将pdf转换成swf,转换完后的swf文件与pdf同名

*@authoriori

*@paramfileDirPDF文件存放路径(包括文件名)

*@paramexePath转换器安装路径

*@throwsIOException

*/

publicstaticsynchronizedvoidpdf2swf(StringfileDir,StringexePath)throwsIOException{

//文件路径

StringfilePath=fileDir.substring(0,fileDir.lastIndexOf("/"));

//文件名,不带后缀

StringfileName=fileDir.substring((filePath.length()+1),fileDir.lastIndexOf("."));

Processpro=null;

if(isWindowsSystem()){

//如果是windows系统

//命令行命令

Stringcmd=exePath+"\""+fileDir+"\"-o\""+filePath+"/"+fileName+".swf\"";

//Runtime执行后返回创建的进程对象

pro=Runtime.getRuntime().exec(cmd);

}else{

//如果是linux系统,路径不能有空格,而且一定不能用双引号,否则无法创建进程

String[]cmd=newString[3];

cmd[0]=exePath;

cmd[1]=fileDir;

cmd[2]=filePath+"/"+fileName+".swf";

//Runtime执行后返回创建的进程对象

pro=Runtime.getRuntime().exec(cmd);

}

//非要读取一遍cmd的输出,要不不会flush生成文件(多线程)

newDoOutput(pro.getInputStream()).start();

newDoOutput(pro.getErrorStream()).start();

try{

//调用waitFor方法,是为了阻塞当前进程,直到cmd执行完

pro.waitFor();

}catch(InterruptedExceptione){

e.printStackTrace();

}

}

/**

*判断是否是windows操作系统

*@authoriori

*@return

*/

privatestaticbooleanisWindowsSystem(){

Stringp=System.getProperty("os.name");

returnp.toLowerCase().indexOf("windows")>=0?

true:

false;

}

/**

*多线程内部类

*读取转换时cmd进程的标准输出流和错误输出流,这样做是因为如果不读取流,进程将死锁

*@authoriori

*/

privatestaticclassDoOutputextendsThread{

publicInputStreamis;

//构造方法

publicDoOutput(InputStreamis){

this.is=is;

}

publicvoidrun(){

BufferedReaderbr=newBufferedReader(newInputStreamReader(this.is));

Stringstr=null;

try{

//这里并没有对流的内容进行处理,只是读了一遍

while((str=br.readLine())!

=null);

}catch(IOExceptione){

e.printStackTrace();

}finally{

if(br!

=null){

try{

br.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

}

}

}

/**

*测试main方法

*@paramargs

*/

publicstaticvoidmain(String[]args){

//转换器安装路径

StringexePath="c:

/ProgramFiles/SWFTools/pdf2swf.exe";

try{

PDF2SWFUtil.pdf2swf("c:

/temp/333.pdf",exePath);

}catch(IOExceptione){

System.err.println("转换出错!

");

e.printStackTrace();

}

}

}

在PDF2SWFUtil.java,右键属性->Runas->JavaApplication,输出main的测试结果。

 

在jsp中执行

新建MyPDF2SWFTest.jsp

<%@pageimport="java.io.*"%>

<%@pageimport="com.artofsolving.jodconverter.openoffice.connection.*"%>

<%@pageimport="com.artofsolving.jodconverter.openoffice.connection.*"%>

<%@pageimport="com.artofsolving.jodconverter.openoffice.converter.*"%>

<%@pageimport="com.artofsolving.jodconverter.*"%>

<%@pageimport="java.util.*"%>

<%@pageimport="com.iori.webapp.util.*"%>

<%

//转换器安装路径

StringexePath="c:

/ProgramFiles/SWFTools/pdf2swf.exe";

try{

PDF2SWFUtil.pdf2swf("c:

/temp/333.pdf",exePath);

}catch(IOExceptione){

System.err.println("转换出错!

");

e.printStackTrace();

}

%>

--下面这些html可以去掉-->

Simplejsppage

Placeyourcontenthere

在项目DocConverter根目录,右键属性->Runas->MyEclipseServerApplication

发布到之前安装的Tomcat6.0的根目录,然后用url路径访问:

Http:

//localhost:

8080/DocConverter/MyPDF2SWFTest.jsp 进行测试。

第四步,office文档转为pdf,同时进一步转为swf

网上资料有很多office文档转为pdf,pdf转为swf,但都是单步转换。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1