2024年1月23日发(作者:)
知识库中文档在线预览功能的实现
1 文档预览方案
知识库中文档以附件的形式上传后, 以 flash 的形式在网页
上展示。文档需要先转化为 pdf ,再从 pdf 转化为 flash 。本文
采用 JODConverter 和 OpenOffice 将 Txt、Word Excel、PPT格 式的文件转换为 PDF文件,再通过 SWFTools中的PDF2SW工具 将PDF文件转换为SWF文件,最终在页面显示,实现在线预览功 能。
OpenOffice 是一套跨平台的办公室软件套件, 能在 Windows、
Linux 等操作系统上执行。 它与各个主要的办公室软件套件兼容,
支持XML微软的 Word Excel、PPT文件等格式。为了把文档
转换PDF格式,需将 变成一个转换引擎,可以 通过网络接口或命令行工具对文件的格式进行转换。
JODConverter 能够将 Word Excel、PPT转换 PDF SWFTools是
种与Adobe Flash ( SWF文件工作的实用工具包,主要包括 用于读取、编译以及生成 SWF文件的程序。其中,P DF2SW工具 可以将PDF文件转换成SWF文件。Flex Player是一款高性能的、 轻量型且极具表现力的客户端运行时播放器, 能够在各种主流操 作系统、浏览器上使用,使得在没有安装PDF阅读器软件的情况 下浏览PDF文件成为可能。本文采用 Java语言对其进行编程实 现,具有与 Java 语言相同的跨平台性,可在不同的操作系统上 运行。
2 实现步骤
2.1 用 JODConverter 调用 服务转换文档为
PDF格式
首先,启动 OpenOffice 服务。设定
DefaultOfficeManagerConfiguration 相关参数,并得到
OfficeManager 。调用 OfficeManager 实现类的 start 方法启动
服务。主要代码如下:
DefaultOfficeManagerConfiguration
configuration =
new );
DefaultOfficeManagerConfiguration
iceHome (OPENOFFICE_HO)M;E //
OP ENOFFICE_HO 为EO penO 安装目录
tNumbers (port ); //
实例运行的端口号,默认为 8100
officeManager =
fficeManager
(); // 启动服务
);
其次,将 doc、 ppt 、 excele 、txt 转化为 pdf 文档。
初始化 OfficeDocumentConverter 并调用其
convert 方法执
行文档转化。主要代码如下:
OfficeDocumentConverter converter =
new
OfficeDocumentConverter (officeManager );
t (new File
(inputFile
pdfFile ));
),new File
//inputFile (pdfFile )为文档(生成的 pdf 文档)存放的
据对路径(包含文件后缀)。
最后,停止 OpenOffice 服务。调用 OfficeManager 实现类 的
stop 方法停止服务。
2.2用SWFTools转换PDF文档为SWF格式
PDF2SW提供了命令行参数,我们可以通过Java的Run time 和Process调用PDF2SW提供的命令将 PDF转为SWF
首先,创建PDF2SW转换命令字符串。
toolPath -t sourcePath -o swfPath -s flashversion=9
其中 toolpath 为 的据对路径, sourcePath 为
准备转换的 pdf 文件的绝对路径, swfPath 为转换后的 swf 文件
存放的据对路径。 flashversion=9
的设置可以保证转换后的文
件可以用 flexpaper 播放。
其次,获得当前运行时 Runtime,调用上一步中的转换命令
进行转换。
2.3 用 FlexPaper 显示 SWF
将下载好的 FlexPaper 中
的 js 文件夹和
文件拷贝到项目目录下,根据 FlexPaper 项目中演示demo设置相应的参数即可完成 swf文件的播放。
这样在线预览功能得以实现。
3 关键技术解析
3.1 乱码问题
转换文档的时候出现中文乱码。 这是因为文档的编码格式为
GB2312文件写入时的编码为 UTF-8,因为读取文件的编码格式 与文件
写入的编码格式不同。可以在读文件内容是通过 Java 代 码将读出的文件内容以 UTF-8格式保存,这样再写入该格式的文 件是就不会出现乱码问题了。
3.2 swf 文件无法播放
使用SWFTools生成的swf文件无法播放,页面一直处于正 加载状态。这是由于 Flexpaper 还没获得 Adobe Flash 的信任, 此时需在Adobe官网把存放swf文件的文件夹夹添加到信任列表 中。
3.3 多附件上传时导致文档转换时间过长
由于每一次的文档转换都需要启动、 关闭 OpenOffice 软件,
多附件上传时频繁的开启关闭系统, 造成资源的浪费, 导致转换 时间过长。 这时可以先进行文档上传操作, 最后对上传的全部文 档进行统一转换,这样只需开启一次 OpenOffice 软件,节省了 转换时间。
4 结束语
本文提供了一种常用文档(Txt、Word Excel、PPT在线 预览功能的实现方式, 实现了跨平台应用, 从而节省了多平台开 发时间。
将文档预览功能应用于知识库, 对其中的文档进行转换 处理后, 当用户获取以文档形式存在的知识时, 可以省去其下载 的时间,在客户端也无需加装任何软件,方便用户浏览,从而加 快知识的传播与应用。


发布评论