总体思路总体思路总体思路总体思路在假期的学习过程中,做到了一个项目中有实现文档的在线预览。文档预览就是以flash的形式在网页上观看,例如百度文库,豆丁网和星期八网等网站一样,实现文档在线的浏览,下载。但是需要考虑的问题是:以什么格式展示flash,怎么把文档转换成flash形式。通过自己的学习,发现网上有很多的类似的文章,实现文档的方法有两种:一种是直接生成好一个完整的flash展示出来,一种是用一个播放器来播放另外一个文档flash。第一种方式可以用SWFTools的工具直接将pdf转化成一个整体的flash展示,但这种方式的flash较大,且不容易控制,故用得较少。第二种方式是重点,首先需要了解的是一个开源的flexpaper播放器,它可以播放一帧一页的flash;在flexpaper的基础上,如果遇到大文档则会出现速度和性能的问题,这个时候需要像百度文库、豆丁一样修改flexpaper,让它支持一次仅读取指定页数的flash;如果文档安全级别较高,不允许下载查看,则需要给flexpaper加上加密解密算法;如果需要登录用户才能查看,则要让flexpaper有登录UI。在转换flash的思路上有很多的方式:一般是把文档转换成pdf格式,在pdf转换成swf格式的方式来实现。在把文档转换成pdf格式方法比较多。例如虚拟打印机、使用MicrosoftOffice的API、使用OpenOffice转化等,但是在转换的过程中容易出现字符的缺少,文档的乱码等问题。在把pdf格式转换成swf格式就比较简单了。可以使用flexpaper来实现。总体思路:下图是文档转化到swf的一个流程,其中type是文档的一个状态标识(0表示未处理过的文档,1表示已生成pdf,2表示已生成flash,-1表示不受支持的文档格式,-2表示转化为pdf失败,-3表示转化为flash失败)OpenOffice.orgOpenOffice.orgOpenOffice.orgOpenOffice.org简介和安装简介和安装简介和安装简介和安装在文档的转换过程中需要使用的到OpenOffice.org软件,使用openoffice的converter方法把文档转换成pdf格式。在这里来了解一下OpenOffice.org软件。OpenOffice.orgOpenOffice.orgOpenOffice.orgOpenOffice.org简介:简介:简介:简介:OpenOffice.org是一套跨平台的办公室软件套件,能在Windows、Linux、MacOSX(X11)、和Solaris等操作系统上执行。它与各个主要的办公室软件套件兼容。OpenOffice.org是自由软件,任何人都可以免费下载、使用、及推广它。现在的最新版本为OpenOffice.org3.4,下载地址为:。本文用到的是OpenOffice2.2.2版本下载地址:的使用的使用的使用的使用::::在调用OpenOffice.org的converter的方法之前,我们必须开启OpenOffice的服务器,这个主要讲三种开启服务的方法,第一种:以命令方式开启openoffice的服务,第二种:系统开启openoffice的服务。第三种:通过java代码开启或者关闭openoffice服务第一种:第一种:第一种:第一种:以命令的方式开启以命令的方式开启以命令的方式开启以命令的方式开启openofficeopenofficeopenofficeopenoffice的服务的服务的服务的服务在cmd命令下,cdopeonofiice的安装路径/program如:cdc:\programfiles\openoffice.org3\programsoffice-headless-accept=socket,host=127.0.0.1,port=8100;urp;-nofirststartwizard第二种第二种第二种第二种:系统开启:系统开启:系统开启:系统开启openofficeopenofficeopenofficeopenoffice的服务的服务的服务的服务在系统开启openoffice的服务我们还需要一个WindowsResourceKittools,将openofficeserver设为系统服务。WindowsResourceKittools是微软专为管理人员、开发人员和高级用户开发的,包括管理活动目录、组策略、TCP/IP网络、注册表、系统安全、监测等涉及WindowsServer2003操作系统的其它很多方面的非常规安装的工具组件。ResourceKitToolsforXP的发布使得XP用户也能使用ResourceKitTools对这些问题进行处理。下载windowsresourcekittools,我们进行默认安装。1.打开WindowsResourceKitTools在CommandShell执行以下命令:C:\ProgramFiles\WindowsResourceKits\Tools\instsrvOpenOfficeUnoServerC:\ProgramFiles\WindowsResourceKits\Tools\srvany.exe打开管理工具-服务可以找到以OpenOfficeUnoServer命名的服务2.打开注册表寻找以下路径HKEY_LOCAL_MACHINE-SYSTEM-ControlSet001-Services-OpenOfficeUnoServer新建项Parameters,在该项下添加两个字符串值:key:Applicationvalue:C:\ProgramFiles\OpenOffice.org3\program\soffice.exekey:AppParametersvalue:-invisible-headless-accept=socket,host=127.0.0.1,port=8100;urp;-nofirststartwizard3.在服务控制台,启动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\instsrvOpenOfficeUnoServerC:\ProgramFiles\WindowsResourceKits\Tools\srvany.exeregaddHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\OpenOfficeUnoServer\Parameters/ve/dregaddHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\OpenOfficeUnoServer\Parameters/vApplication/tREG_SZ/dC:\ProgramFiles\OpenOffice.org3\program\soffice.exeregaddHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\OpenOfficeUnoServer\Parameters/vAppParameters/tREG_SZ/d-invisible-headless-accept=socket,host=127.0.0.1,port=8100;urp;-nofirststartwizard关于这两种的方法我都是从网上搜集到的,在使用的过程中经常无法正常的启用。或许因为我看到有个dos和系统的注册表就晕的问题了。可是总体来说在文档的转换过程之前我们必须开启OpenOpenoffice的服务,不然无法进行正常的转换,会在控制台报出让人反感的异常。这样看起来很麻烦,个人不太喜欢这个方式,所以有了第三种方案。通过java代码开启服务,这个方法主要是在进行转换文档时自动开启OpenOpenoffice的服务,转换完成后自动关闭。虽然这样或许有些问题,可是个人感觉比较实用点。第三种方案:第三种方案:第三种方案:第三种方案:javajavajavajava代码开启服务代码开启服务代码开启服务代码开启服务java代码开启服务主要的是在转换文档的过程中每次转换之前先进行startserveice,执行转换,stopservice。主要的代码如下:1publicstaticvoidstartService(){2DefaultOfficeManagerConfigurationconfiguration=newDefaultOfficeManagerConfiguration();3try{4System.out.println(准备启动服务....);5configuration.setOfficeHome(OFFICE_HOME);//设置OpenOffice.org安装目录6configuration.setPortNumbers(port);//设置转换端口,默认为81007configuration.setTaskExecutionTimeout(1000*60*5L);//设置任务执行超时为5分钟8configuration.setTaskQueueTimeout(1000*60*60*24L);//设置任务队列超时为24小时910officeManager=configuration.buildOfficeManager();11officeManager.start();//启动服务12System.out.println(office转换服务启动成功!);13}catch(Exceptionce){14System.out.println(office转换服务启动失败!详细信息:+ce);15}16}1718//关闭服务器19publicstaticvoidstopService(){20System.out.println(关闭office转换服务....);21if(officeManager!=null){22officeManager.stop();23}24System.out.println(关闭office转换成功!);25}26利用利用利用利用JODConverterJODConverterJODConverterJODConverter把文档转换成把文档转换成把文档转换成把文档转换成pdfpdfpdfpdf格式格式格式格式文档的转换成pdf格式的方法有很多,目前主要有三种解决方案:利用Jacob或者JCom调用MSOffice或者WPSOfficeAPI,利用JODConverter调用OpenOffice.org服务,调用虚拟打印机转换文档为PDF。由于本人对于Jacob和JCom调用MSOffice或者wpsOfficeAPI不是很了解,在这里就不说了,本文用到的方法主要是JODConverter调用OpenOffice.org服