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在线 预览功能的实现方式, 实现了跨平台应用, 从而节省了多平台开 发时间。

将文档预览功能应用于知识库, 对其中的文档进行转换 处理后, 当用户获取以文档形式存在的知识时, 可以省去其下载 的时间,在客户端也无需加装任何软件,方便用户浏览,从而加 快知识的传播与应用。