doc转swf,主流文档在线查看解决方案--类似百度文档功能

本文档介绍了如何实现在线查看文档的功能,主要探讨了三种解决方案:FlexPaper+Pdf2swf、FlashPaper和Print2Flash。最终选择了FlashPaper,因其免费且支持多种格式。详细步骤包括FlashPaper的安装、文档转换及显示转换后的SWF文件。
摘要由CSDN通过智能技术生成

引言:

最近项目中对上传的文件需要在线查看功能(就是不用下载到本地,可以直接在网页里打开的查看),通过几周的研究终于搞定,在此总结下供有同样需求的同仁查询和使用。


原理:

通常的在线查看功能都是使用文档转换工具,把原始文档转换成swf文档,然后通过网页直接展示文档内容。


解决方案:

在前期技术研究的过程中,发现有三种解决方案,他们分别是:

1、使用 FlexPaper + Pdf2swf 组合。

缺点是只能提供pdf转换成swf然后在线查看。要支持其他格式的话,需要先转成pdf,这样的话效率有点低。不过网上这种方式的资料挺多的。

相关资料: www.cnblogs.com/luckyxiaoxuan/archive/2012/06/13/2548510.html


2、使用FlashPaper 把文档转成swf直接显示

这种方式的好处在于支持多种格式的文档转换,支持的文档格式包括(doc、docx、xls、xlsx、pdf、txt, ppt、pptx), ppt、pptx的支持效果不怎么好,转换有些慢,要支持这两种方式的话,有专有的转换工具。

原来准备使用FlashPaper转换成swf文档,然后使用FlexPaper显示的,但是发现使用FlexPaper显示FlashPaper转成的swf存在问题,不能显示swf内容,而且不停的闪。后来想起浏览器可以直接支持swf显示的。使用<object><embed>标签即可。

还有一个好处就是这个工具免费。


缺点就是: 最后版本2.2,发布于2008年5月,此后不再支持;支持winxp, server2003等,不支持win7系统;

3、使用Print2Flash把文档转换成swf直接显示

这个东西比FlashPaper更强大,功能更全面,而且提供各种系统的支持。是一个非常不错的工具。

缺点就是:需要money,有需求的公司可以使用。

相关资料: http://www.blue-pacific.com/print2flash/samples/default.htm


我的方案:

我选用的第二种方案,免费,而且对各种当前流行的文档都支持,同时服务器是window server 2003。下面说下具体的程序吧。

1、FlashPaper的安装

可以在网上下载 FlashPaper2.2绿色版,地址: http://download.csdn.net/detail/walkerjong/4420486

下载安装程序后,可以点击install.bat安装FlashPaper,若出现下面的错误:

flashpaper AddPrinterDriver stage 13: error 126 - 找不到指定的模块

错误原因: 安装操作系统的时候没有开启系统还原功能,FlashPaper需要使用该功能。

解决方案: 把安装文件包里的srclient.dll文件拷贝到c:/windows/system32/目录下。

当然也可以使用java程序自动安装,下面是我的工具类代码:FlashPaperUtil.java

package org.study.isap.common.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.log4j.Logger;

public class FlashPaperUtil {
	
	private static final Logger logger = Logger.getLogger(FlashPaperUtil.class);
	
	// flashPaper的存放位置
	public static final String FLASH_PAPER_DIR = "bin/flashPaper2_2";
	
	// 转换各种格式的文档为swf的命令
	public static final String FLASH_PAPER_CMD = "FlashPrinter.exe";
	
	// 检查swf是否转换完成的最大等待次数
	private static final int maxWaitCount = 60;
	
	// 检查swf是否存在的时间间隔, 单位ms。
	private static final int checkInterval = 20000;	
		
	private static final File flashPaperDir = initDir();
	
	private FlashPaperUtil(){
	}
	
	private static File initDir(){
		File dir = new File(FileUtil.getWebRootPath(), FLASH_PAPER_DIR);
		logger.debug("flashPaperDir["+dir.getAbsolutePath()+"]");
		return dir;
	}
		
	/**
	 * 卸载flashPaper。
	 */
	public static void uninstall(){
		String uninstallCmd = "uninstall.bat";
		try {
			String cmd =new File(flashPaperDir, uninstallCmd).getAbsolutePath();
			Runtime runtime = Runtime.getRuntime();
			Proce
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值