openoffice/libreoffice++jodconvert++swfTools++flaxpaper实现文档在线浏览

文档在线浏览总体步骤说明:

1、利用openoffice或libreoffice与jodconvert结合,将word,Excel等等office文件转换为PDF格式的文件。

2、利用swfTools安装后包中的PDF2swf.exe将PDF文件转为swf格式的文件。

3、利用flaxpaper实现在线打开。

————————————第一步:转为PDF——————————————

转换word,PPT,Excel,TXT等等文件为PDF格式:

方法一:使用openoffice+jodconvert

准备工作:下载安装openoffice    地址:http://www.openoffice.org/download/index.html

                下载jodconverter   下载地址:https://sourceforge.net/projects/jodconverter/

                 导入jodconverter对应的jar包,为所下载的jodconverter.zip中libs目录下的jar包。包括:

openoffice/libreoffice++jodconvert++swfTools++flaxpaper实现文档在线浏览_第1张图片

代码:

import java.io.File;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;


public class convert {
	
	public String doc2Pdf(String docFileName) {
		File docFile = new File(docFileName);
		String noExt = docFileName.substring(0, docFileName.lastIndexOf("."));
		File pdfFile = new File(noExt + ".pdf");
		StringBuffer sb = new StringBuffer("");
		String res = "";
		if (docFile.exists()) {
			OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
			try {
				connection.connect();
				DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
				converter.convert(docFile, pdfFile);
				connection.disconnect();
			} catch (Exception e) {
				e.printStackTrace();
				sb.append("转换异常");
			}
		} else {
			sb.append("需要转换的文件不存在");
		}
		sb.append(res);
		return sb.toString();
	}
}

方法二:使用libreoffice+jodconvert

准备工作:下载安装libreoffice     地址:https://www.libreoffice.org/download/download/

        导入jodconverter-core-3.0-beta-4.jar   下载地址:http://download.csdn.net/download/rory898863935/10255288

代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.regex.Pattern;

import org.apache.commons.io.FileUtils;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;

  
public class convertLibre {
	
    /** 
     * 转换libreoffice支持的文件为pdf 
     * @param inputfile 
     * @param outputfile 
     */  
    public String office2Pdf(String docFileName) {
        String LibreOffice_HOME = getLibreOfficeHome();
        File docFile = new File(docFileName);
	String noExt = docFileName.substring(0, docFileName.lastIndexOf("."));
	File pdfFile = new File(noExt + ".pdf");
	StringBuffer sb = new StringBuffer("");
        DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
        configuration.setOfficeHome(new File(LibreOffice_HOME));
        configuration.setPortNumber(8100);
        OfficeManager officeManager = configuration.buildOfficeManager();  
        officeManager.start();
        OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);  
        try {  
            converter.convert(docFile, pdfFile);
            sb.append("success");
        } catch (Exception e) {
        	sb.append("转换异常");
            e.printStackTrace();  
        } finally {
            officeManager.stop();  
        }
        return sb.toString();
    }  
    
}


————————————第二步:PDF转为swf————————————

将转换好的PDF文件转为swf文件。如果要打开的是PDF,则可以直接跳过第一步。

准备工作:下载swftools。 地址:https://swftools.en.softonic.com/download

下载安装后,在安装目录找到PDF2swf.exe,将文件拷贝到项目路径下。

代码:

public String pdf2swf(String noExt) {
		Runtime r = Runtime.getRuntime();
		File swfFile = new File(noExt + ".swf");
		File pdfFile = new File(noExt + ".pdf");
		File pdfFile2 = new File(noExt + ".pdf");
		StringBuffer sb = new StringBuffer("");
		if (!swfFile.exists()) {
			if (environment == 1) {// windows环境处理
				try {
					File tempPdf = new File(pdfFile.getPath().substring(0, pdfFile.getPath().lastIndexOf("\\") + 1) + "temp.pdf");
					pdfFile.renameTo(tempPdf);// 防止因为文件名导致的转换错误
					String relPath = convert.class.getResource(convert.class.getSimpleName() + ".class").toString();
					String swfPath = relPath.substring(relPath.indexOf("fiel:/") + 7, relPath.indexOf("/WEB-INF"))
							+ "/pdf/pdf2swf.exe ";
					String cmd = swfPath + tempPdf.getPath() + " -o " + swfFile.getPath() + " -T 9";
					Process p = r.exec(cmd);
					boolean finish = true;
					while (finish) {
						if (!swfFile.exists()) {
							Thread.sleep(500);
						} else {
							finish = false;
						}
					}
					if (pdfFile.exists()) {
						pdfFile.renameTo(pdfFile2);
					}
					sb.append("success");
				} catch (Exception e) {
					e.printStackTrace();
					sb.append("转换为swf失败");
				}
			} else if (environment == 2) {// linux环境处理
				try {
					Process p = r.exec("pdf2swf " + pdfFile.getPath() + " -o " + swfFile.getPath() + " -T 9");
					if (pdfFile.exists()) {
						pdfFile.delete();
					}
					sb.append("success");
				} catch (Exception e) {
					e.printStackTrace();
					sb.append("转换为swf失败");
				}
			}
		} else {
			sb.append("success");
		}
		return sb.toString();
	}

——————————第三步:使用flaxpaper打开swf文件————————


准备工作:下载flaxpaper      地址:http://download.csdn.net/download/rory898863935/10255338

将所下载的压缩包中的,flexpaper_flash.js和FlexPaperViewer.swf。放在项目指定的位置。

flexpaper_flash.js和FlexPaperViewer.swf是实现swf文件在线浏览的必须文件。

flexpaper_repair.js可以解决某些浏览器无法打开的情况,解决了兼容性问题,可以使得所有的浏览器都可以正常在线浏览。

flexpaper_repair.js下载地址:http://download.csdn.net/download/rory898863935/10255347

jsp代码:


 
 
 
	

问题解决:很多人执行了上面所有的步骤,但是无法打开,90%都是路径有问题,路径是指要打开的swf文件路径和flexpaperViewer.swf文件路径。

在代码的这里:swfPath为要打开的文件,fp为flexpaperViewer.swf的路径,两者在前面都要加项目。

比如swf文件在项目(kk)/web/asd/test.swf。那么这里就应该写/kk/asd/test.swf。

swfPath = '/a1/upload/'+fileName+'.swf';
				var fp = new FlexPaperViewer(
						'/a1/flexpaper/FlexPaperViewer',

你可能感兴趣的:(flaxpaper,在线浏览,swf,JavaScript,Java学习之路)