版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、java将office文档pdf文档转换成swf文件在线预览第一步,安装 是一套sun的开源office办公套件,能在widows,linux,solaris等操作系统上执行。主要模块有writer(文本文档),impress(演示文稿),calc(电子表格),draw(绘图),math(公式),base(数据库)笔者下载的是 3.3.0。下载完直接安装即可。 但是,我们还需要启动openoffice server。有两种做法:
2、 1.以命令行方式启动openoffice server,缺点是每次系统重启,都需要手动去把openoffice server启动。 2.将openoffice server作为操作系统的服务启动,既然成为了系统服务,就可以设定开机自动启动了。 我们先来看第一种方式,1.以命令行方式启动openoffice server在cmd命令下,cd opeonofiice的安装路径/program 如:cd c:program 3programsoffice -headless
3、-accept="socket,host=,port=8100;urp;" -nofirststartwizard 2.以系统服务的方式启动 这里我们还需要windows resource kit tools ,将openoffice server设为系统服务。windows resource kit tools 是微软专为管理人员、开发人员和高级用户开发的,包括管理活动目录、组策略、tcp/ip网络、注册表、系统安全、监测等涉及windows server 2003 操作系统的其它很多方面的非常规安装的工具组
4、件。resource kit tools for xp的发布使得xp用户也能使用resource kit tools对这些问题进行处理。 下载windows resource kit tools,我们进行默认安装。 1.打开windows resource kit tools 在command shell执行以下命令: "c:program fileswindows resource kitstoolsinstsrv" openoff
5、iceunoserver "c:program fileswindows resource kitstoolssrvany.exe"打开 管理工具->服务 可以找到以 openofficeunoserver 命名的服务 2.打开注册表寻找以下路径 hkey_local_machine -> system ->controlset001 ->services ->openofficeunoserver 新建项 parameters,在该项下添加两个字符串值:key:
6、application value:c:program filesopeno 3programsoffice.exe key:appparameters value:-invisible -headless -accept=socket,host=,port=8100;urp; -nofirststartwizard 3.在服务控制台,
7、启动 openoffice 服务 4.在cmd中用以下命令查看8100是否已被监听:netstat -anop tcp这样openoffice3.0就以服务方式运行在windows系统上了。(使用cmd命令:netstat -anp tcp查看8100端口是否工作)然後可以通过socket方式连接openoffice,以使用openoffice提供的某些服务,如文件转换服务,ms office转pdf等等。开源项目 jodconverter 就是结合openoffice来进行文档转换的java组件。另外有一个命令行工具swftools,该工具可以
8、将pdf转换为swf格式的文档,提供给ie客戶端流览。 另外,我们可以将该配置用bat文件来快速实现,运行前请先修改相应目录参数: openoffice service.bat文件 "c:program fileswindows resource kitstoolsinstsrv" openofficeunoserver "c:program fileswindows resource kitstoolssrvany.exe"
9、 reg add hkey_local_machinesystemcontrolset001servicesopenofficeunoserverparameters /ve /d reg add hkey_local_machinesystemcontrolset001servicesopenofficeunoserverparameters /v application /t reg_sz /d "c:program filesopeno 3programsoffice.exe"&
10、#160; reg add hkey_local_machinesystemcontrolset001servicesopenofficeunoserverparameters /v appparameters /t reg_sz /d "-invisible -headless -accept=socket,host=,port=8100;urp; -nofirststartwizard"第二步,使用jodconverter将office文档转换为pdfjodconverter是一个java的openducument文件转换器,可
11、以进行许多文件格式的转换,它利用openoffice来进行转换工作,它能进行以下的转换工作: 1.microsoft office格式转换为openducument,以及openducument转换为microsoft office 2.openducument转换为pdf,word、excel、powerpoint转换为pdf,rtf转换为pdf等。它是一个开源项目。 我的项目是在myeclipse下开发的。下载最新版的jodconverter-2.2.2,把lib文件夹的包导入到你的d
12、occonverter项目的lib文件夹内。(假设你的项目是docconverter)新建doc2pdfutil.javapackage com.iori.webapp.util;import java.io.file; import java.io.ioexception;import .connectexception; import java.util.date; import com.artofsolving.jodconverter.documentconverter; import com.artofsolving.jodconverter.openoffice.connectio
13、n.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 output
14、file;/ 输出的文件 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 = n
15、ew 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();
16、 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
17、) 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=&qu
18、ot;java.io.*"%><% page import="com.artofsolving.jodconverter.openoffice.connection.*"%><% page import="com.artofsolving.jodconverter.openoffice.connection.*"%><% page import="com.artofsolving.jodconverter.openoffice.converter.*"%><% page imp
19、ort="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 doc2pdfuti
20、l(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的根目录
21、,然后用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端口的openo 实例openofficeconnection connection = new socketo
22、penofficeconnection(8100);connection.connect(); / 创建一个converter对象并转换格式documentconverter converter = new openofficedocumentconverter(connection);converter.convert(inputfile, outputfile); / 关闭连接connection.disconnect();第三步,使用swftools将pdf转换为swf建议下载swftools-0.9.1,笔者起先下载的是最新版的swftools-1.0版。貌似转换时出错,缺少什么组件。
23、 继续笔者的docconverter项目。笔者使用的开发环境是myeclipse 9.0。新建pdf2swfutil.javapackage com.iori.webapp.util;import java.io.bufferedreader;import java.io.ioexception;import java.io.inputstream;import java.io.inputstreamreader;public class pdf2swfutil /* * 利用swftools工具将pdf转换成swf,转换完后的swf文件与pdf
24、同名 * author iori * param filedir pdf文件存放路径(包括文件名) * param exepath 转换器安装路径 * throws ioexception */ public static synchronized void pdf2swf(string filedir, string exepath) throws ioexception /文件路径 string filepath = filedir.substring(0, filedir.lastindexof("/"); /文件名,不带后缀 string filename = fi
25、ledir.substring(filepath.length() + 1), filedir.lastindexof("."); process pro = null; if (iswindowssystem() /如果是windows系统 /命令行命令 string cmd = exepath + " "" + filedir + "" -o "" + filepath + "/" + filename + ".swf"" /runtime执行后返回创
26、建的进程对象 pro = runtime.getruntime().exec(cmd); else /如果是linux系统,路径不能有空格,而且一定不能用双引号,否则无法创建进程 string cmd = new string3; cmd0 = exepath; cmd1 = filedir; cmd2 = filepath + "/" + filename + ".swf" /runtime执行后返回创建的进程对象 pro = runtime.getruntime().exec(cmd); /非要读取一遍cmd的输出,要不不会flush生成文件(多线程
27、) new dooutput(pro.getinputstream().start(); new dooutput(pro.geterrorstream().start(); try /调用waitfor方法,是为了阻塞当前进程,直到cmd执行完 pro.waitfor(); catch (interruptedexception e) e.printstacktrace(); /* * 判断是否是windows操作系统 * author iori * return */ private static boolean iswindowssystem() string p = system.ge
28、tproperty(""); return p.tolowercase().indexof("windows") >= 0 ? true : false; /* * 多线程内部类 * 读取转换时cmd进程的标准输出流和错误输出流,这样做是因为如果不读取流,进程将死锁 * author iori */ private static class dooutput extends thread public inputstream is; /构造方法 public dooutput(inputstream is) this.is = is;
29、 public void run() bufferedreader br = new bufferedreader(new inputstreamreader(this.is); string str = null; try /这里并没有对流的内容进行处理,只是读了一遍 while (str = br.readline() != null); catch (ioexception e) e.printstacktrace(); finally if (br != null) try br.close(); catch (ioexception e) e.printstacktrace(); /
30、* * 测试main方法 * param args */ public static void main(string args) /转换器安装路径 string exepath = "c:/program files/swftools/pdf2swf.exe" try pdf2swfutil.pdf2swf("c:/temp/333.pdf", exepath); catch (ioexception e) system.err.println("转换出错!"); e.printstacktrace(); 在pdf2swfutil.
31、java,右键属性 - >run as - >java application ,输出main的测试结果。 在jsp中执行新建mypdf2swftest.jsp<% page import="java.io.*"%><% page import="com.artofsolving.jodconverter.openoffice.connection.*"%><% page import="com.artofsolving.jodconverter.openoffice.connection.*
32、"%><% page import="com.artofsolving.jodconverter.openoffice.converter.*"%><% page import="com.artofsolving.jodconverter.*"%><% page import="java.util.*"%><% page import="com.iori.webapp.util.*"%><%/转换器安装路径string exepath = &qu
33、ot;c:/program files/swftools/pdf2swf.exe"try pdf2swfutil.pdf2swf("c:/temp/333.pdf", exepath); catch (ioexception e) system.err.println("转换出错!"); e.printstacktrace();%><!- 下面这些html可以去掉 -><html> <head><title>simple jsp page</title></head>
34、 <body>place your content here</body></html>在项目docconverter根目录,右键属性 - >run as - >myeclipse server application发布到之前安装的tomcat 6.0的根目录,然后用url路径访问:http:/localhost:8080/docconverter/mypdf2swftest.jsp 进行测试。第四步,office文档转为pdf,同时进一步转为swf网上资料有很多office文档转为pdf,pdf转为swf,但都是单步转换。关于一起转
35、换的资料比较少。一起转换有个问题就是转为pdf时,这个转换过程将花费一段时间才能成功,如何控制在pdf转换成功后,才进行swf的转换。以及多个文档批量转换又该怎么办。 有幸笔者还是找到了一篇同时转换的代码:新建docconverter.javapackage com.iori.webapp.util;import java.io.bufferedinputstream;import java.io.file;import java.io.ioexception;import java.io.inputstream;import com
36、.artofsolving.jodconverter.documentconverter;import com.artofsolving.jodconverter.openoffice.connection.openofficeconnection;import com.artofsolving.jodconverter.openoffice.connection.socketopenofficeconnection;import com.artofsolving.jodconverter.openoffice.converter.openofficedocumentconverter;/*
37、* doc docx格式转换 * author administrator */public class docconverter private static final int environment=1;/环境1:windows 2:linux(涉及pdf2swf路径问题) private string filestring; private string outputpath=""/输入路径,如果不设置就输出在默认位置 private string filename; private file pdffile; private file swffile; priva
38、te file docfile; public docconverter(string filestring) ini(filestring); /* * 重新设置 file * param filestring */ public void setfile(string filestring) ini(filestring); /* * 初始化 * param filestring */ private void ini(string filestring) this.filestring=filestring; filename=filestring.substring(0,filestr
39、ing.lastindexof("."); docfile=new file(filestring); pdffile=new file(filename+".pdf"); swffile=new file(filename+".swf"); /* * 转为pdf * param file */ private void doc2pdf() throws exception if(docfile.exists() if(!pdffile.exists() openofficeconnection connection=new sock
40、etopenofficeconnection(8100); try connection.connect(); documentconverter converter=new openofficedocumentconverter(connection); converter.convert(docfile,pdffile); /close the connection connection.disconnect(); system.out.println("*pdf转换成功,pdf输出:"+pdffile.getpath()+"*"); catch(.
41、connectexception e) /todo auto-generated catch block e.printstacktrace(); system.out.println("*swf转换异常,openoffice服务未启动!*"); throw e; catch(com.artofsolving.jodconverter.openoffice.connection.openofficeexception e) e.printstacktrace(); system.out.println("*swf转换器异常,读取转换文件失败*"); th
42、row e; catch(exception e) e.printstacktrace(); throw e; else system.out.println("*已经转换为pdf,不需要再进行转化*"); else system.out.println("*swf转换器异常,需要转换的文档不存在,无法转换*"); /* * 转换成swf */ private void pdf2swf() throws exception runtime r=runtime.getruntime(); if(!swffile.exists() if(pdffile.ex
43、ists() if(environment=1)/windows环境处理 try process p=r.exec("c:/program files/swftools/pdf2swf.exe "+pdffile.getpath()+" -o "+swffile.getpath()+" -t 9"); system.out.print(loadstream(p.getinputstream(); system.err.print(loadstream(p.geterrorstream(); system.out.print(loads
44、tream(p.getinputstream(); system.err.println("*swf转换成功,文件输出:"+swffile.getpath()+"*"); if(pdffile.exists() pdffile.delete(); catch (exception e) e.printstacktrace(); throw e; else if(environment=2)/linux环境处理 try process p=r.exec("pdf2swf "+pdffile.getpath()+" -o &qu
45、ot;+swffile.getpath()+" -t 9"); system.out.print(loadstream(p.getinputstream(); system.err.print(loadstream(p.geterrorstream(); system.err.println("*swf转换成功,文件输出:"+swffile.getpath()+"*"); if(pdffile.exists() pdffile.delete(); catch (exception e) e.printstacktrace(); thr
46、ow e; else system.out.println("*pdf不存在,无法转换*"); else system.out.println("*swf已存在不需要转换*"); static string loadstream(inputstream in) throws ioexception int ptr=0; in=new bufferedinputstream(in); stringbuffer buffer=new stringbuffer(); while(ptr=in.read()!=-1) buffer.append(char)ptr
47、); return buffer.tostring(); /* * 转换主方法 */ public boolean conver() if(swffile.exists() system.out.println("*swf转换器开始工作,该文件已经转换为swf*"); return true; if(environment=1) system.out.println("*swf转换器开始工作,当前设置运行环境windows*"); else system.out.println("*swf转换器开始工作,当前设置运行环境linux*"
48、); try doc2pdf(); pdf2swf(); catch (exception e) / todo: auto-generated catch block e.printstacktrace(); return false; if(swffile.exists() return true; else return false; /* * 返回文件路径 * param s */ public string getswfpath() if(swffile.exists() string tempstring =swffile.getpath(); tempstring=tempstring.replaceall("", "/"); return tempstring; else return "" /* * 设置输出路径 */ public void setoutputpath(string
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2020年中考历史全程复习课件知识3秦汉时期统一多民族国家的建立和巩固
- 事故应急演练的策划与实施考核试卷
- 森林资源价值与生态补偿机制考核试卷
- 天然气在城市规划与建设中的应用考核试卷
- 煤炭行业的市场竞争与价格趋势考核试卷
- DB11T 809-2011 典当经营场所安全防范技术要求
- 小熊出游课件教学课件
- 雪国课件教学课件
- 兰花培训课件
- 美术职业课件教学课件
- 英语漫谈胶东海洋文化知到章节答案智慧树2023年威海海洋职业学院
- 环保产品管理规范
- 中医确有专长综述范文(5篇)
- 非小细胞肺癌NCCN指南解读
- EBO管理体系与案例分享
- 拦砂坝施工设计方案
- GB/T 20934-2016钢拉杆
- 教研课平行四边形和梯形的复习ppt
- S曲线和技术进化法则TRIZ专题培训课件
- 铜矿普查简报铜矿
- 消防设施定期检查、检测、维修保养记录
评论
0/150
提交评论