`

实现在线预览

    博客分类:
  • java
阅读更多

var url = "one/readontheweb.jsp?unid="+unid;

window.location = encodeURI(url);

 

功能:在线预览

 

String htmlUrl="";

try{

String unid = request.getParameter("unid");

AppFile appFile = new AppFileManager(JNDI).doFindBeanByKey(unid);

appFile = null == appFile ? new AppFile() : appFile;

htmlUrl= AHSZFileToHtmlTools.getUrlByFile(appFile);

}catch(Exception e){

e.printStackTrace();

}

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>首页</title>

<style type="text/css">

.boxContent{height: 100%;width:auto;min-width:600px;_width:expression(documentElement.clientWidth >1000? documentElement.clientWidth:1000);}

#MainWrap{padding: 10px;text-align: center;}

</style>

<script type="text/javascript" src="${corejs}/jquery.js"></script>

<script type="text/javascript">

function reinitIframe(){  

var iframe = document.getElementById("mainFrm");  

        try{  

            var bHeight = iframe.contentWindow.document.body.scrollHeight;  

            var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;

            var height = Math.min(bHeight, dHeight);  

            iframe.height =  height;  

        }catch (ex){}  

    }  

    //window.setInterval("reinitIframe()", 500);

</script>

</head>

<body>

<div class="boxContent">

<div id="MainWrap" style="height:2100px;">

<iframe id="mainFrm" src="${path }<%=htmlUrl %>" 

scrolling="no" marginheight="0" marginwidth="0" frameborder="0" 

width="100%" height="100%" name="mainFrm" onload="this.height=100%" 

style="background-color:transparent">

</iframe>

</div>

</div>

</body>

</html>

<script type="text/javascript">

    /**$(function(){

    //reinitIframe();

    });*/

</script>

 

 

public class AHSZFileToHtmlTools {

public static final int WORD_HTML = 8;

public static final int EXCEL_HTML = 44;

 

public static String getUrlByFile(AppFile appFile) {

String fileExt = appFile.getFile_ext();

String defaultUrl = "other.jsp?unid=" + appFile.getFile_unid();

if ("doc".equalsIgnoreCase(fileExt) 

|| "docx".equalsIgnoreCase(fileExt)

|| "xls".equalsIgnoreCase(fileExt)

|| "xlsx".equalsIgnoreCase(fileExt)) {

StringBuffer htmlPath = new StringBuffer();

htmlPath.append(getWebAppAddress()).append("was/upload/generate/");

if (!new File(htmlPath.toString()).exists()) {

FileUtil.mkdirs(htmlPath.toString());

}

htmlPath.append(appFile.getFile_unid()).append(".html");

if (!new File(htmlPath.toString()).exists()) {

String srcPath = getWebAppAddress() + appFile.getFile_path();

srcPath = srcPath.replace("//", "/");

srcPath = srcPath.replaceAll(" ", "%20");

byte2File(BlobUtil.blobToBytes(appFile.getFile_data()), srcPath);

try {

if ("doc".equalsIgnoreCase(fileExt)

|| "docx".equalsIgnoreCase(fileExt)) {

wordToHtml(srcPath, htmlPath.toString());

} else {

excelToHtml(srcPath, htmlPath.toString());

}

//new AppFileManager(GlobalParameter.APP_WAS).doUpdate(appFile);

} catch (Exception e) {

e.printStackTrace();

return defaultUrl;

}

}

return "/was/upload/generate/" + appFile.getFile_unid() + ".html";

}

 

return defaultUrl;

}

 

/**

* 文档转换函数

* @param docfile

*            word文档的绝对路径加文件名(包含扩展名)

* @param htmlfile

*            转换后的html文件绝对路径和文件名(不含扩展名)

* @throws Exception

*/

public static void wordToHtml(String docfile, String htmlfile) throws Exception {

// 初始化com的线程

ComThread.InitSTA();

ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word

try {

app.setProperty("Visible", new Variant(false));

// 设置word不可见

Dispatch docs = app.getProperty("Documents").toDispatch();

Dispatch doc = Dispatch.invoke(

docs,

"Open",

Dispatch.Method,

new Object[] { docfile, new Variant(false),

new Variant(true) }, new int[1]).toDispatch();

// 打开word文件

Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {

htmlfile, new Variant(WORD_HTML) }, new int[1]);

// 作为html格式保存到临时文件

Variant f = new Variant(false);

Dispatch.call(doc, "Close", f);

} catch (Exception e) {

throw e;

} finally {

app.invoke("Quit", new Variant[] {});

// 释放在程序线程中引用的其它com,比如Adobe PDFDistiller

ComThread.Release();

}

}

/**

* EXCEL转HTML

* @param xlsfile

*            EXCEL文件全路径

* @param htmlfile

*            转换后HTML存放路径

* @throws Exception

*/

public static void excelToHtml(String excelfile, String htmlfile) throws Exception {

// 初始化com的线程

ComThread.InitSTA();

// 启动excel

ActiveXComponent app = new ActiveXComponent("Excel.Application");

try {

// 设置excel不可见

app.setProperty("Visible", new Variant(false));

Dispatch excels = app.getProperty("Workbooks").toDispatch();

// 打开excel文件

Dispatch excel = Dispatch.invoke(

excels,

"Open",

Dispatch.Method,

new Object[] { excelfile, new Variant(false),

new Variant(true) }, new int[1]).toDispatch();

// 作为html格式保存到临时文件

Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {

htmlfile, new Variant(EXCEL_HTML) }, new int[1]);

Variant f = new Variant(false);

Dispatch.call(excel, "Close", f);

} catch (Exception e) {

throw e;

} finally {

app.invoke("Quit", new Variant[] {});

// 释放在程序线程中引用的其它com,比如Adobe PDFDistiller

ComThread.Release();

}

}

/**

* 获取系统的应用路径(路径在应用下)

* @return

*/

private static String getWebAppAddress() {

Class theClass = AHSZFileToHtmlTools.class;

java.net.URL u = theClass.getResource("");

// str会得到这个函数所在类的路径

String str = u.toString();

// 截去一些前面6个无用的字符

str = str.substring(6, str.length());

// 将%20换成空格(如果文件夹的名称带有空格的话,会在取得的字符串上变成%20)

str = str.replaceAll("%20", " ");

// 查找“WEB-INF”在该字符串的位置

int num = str.indexOf("WEB-INF");

// 截取即可

str = str.substring(0, num);

if (System.getProperty("os.name").toUpperCase().indexOf("LINUX") >= 0) {

str = "/" + str;

}

return str;

}

public static void byte2File(byte[] buf, String filePath) {

BufferedOutputStream bos = null;

FileOutputStream fos = null;

File file = null;

try {

File dir = new File(filePath);

if (!dir.exists() && dir.isDirectory()) {

dir.mkdirs();

}

file = new File(filePath);

fos = new FileOutputStream(file);

bos = new BufferedOutputStream(fos);

bos.write(buf);

} catch (Exception e) {

e.printStackTrace();

} finally {

if (bos != null) {

try {

bos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (fos != null) {

try {

fos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

分享到:
评论

相关推荐

    Asp.net MVC 利用(aspose+pdfobject.js) 实现在线预览word、excel、ppt、pdf文件

    视图接收到数据后,将其插入到页面的指定位置,实现预览。 6. **安全考虑**:确保对上传和预览的文件进行安全检查,防止恶意文件的上传和执行。限制可预览的文件类型,使用Content-Disposition头来防止文件被下载,...

    jquery.media.js 插件实现在线预览PDF文件

    `jquery.media.js`可能利用此标签插入PDF阅读器,以实现在线预览。 4. **Adobe Flash**:在某些浏览器不支持HTML5或者需要更丰富的交互功能时,`jquery.media.js`可能会借助Adobe Flash技术来显示PDF。Flash提供了...

    word转PDF然后实现在线预览的功能.rar

    在IT行业中,将Word文档转换为PDF格式并实现在线预览功能是一项常见的需求,尤其在Web应用中。这个压缩包“word转PDF然后实现在线预览的功能.rar”提供了一个技术解决方案,下面我们将深入探讨其中涉及的关键知识点...

    Word转PDF在实现在线预览功能.rar

    这个"Word转PDF在实现在线预览功能.rar"压缩包提供了一个使用Java来实现这一功能的解决方案。Java作为一种广泛使用的编程语言,具有丰富的库资源,可以方便地处理这种文件转换任务。 首先,我们需要了解的是Apache ...

    Linux服务上实现在线预览PPT,PPTX,DOC,DOCX,XLS,XLSX文件安装插件详细步骤

    ### Linux服务上实现在线预览PPT/PPTX/DOC/DOCX/XLS/XLSX文件的安装插件详细步骤 #### 环境准备 本文档主要介绍如何在Linux服务器上实现各种常见文档(包括PPT、PPTX、DOC、DOCX、XLS、XLSX)的在线预览功能。此...

    poi将word、PPT、Excel转pdf实现在线预览的jar包

    标题中的“poi将word、PPT、Excel转pdf实现在线预览的jar包”涉及到的是Apache POI库在Java开发中的应用,以及如何利用它来处理Microsoft Office文档并转换为PDF格式,以便进行在线预览。Apache POI是Java平台上用于...

    word文件转pdf或者word转html实现在线预览

    为了实现预览功能,可以使用iframe嵌入HTML页面,或者使用PDF.js这样的库来在浏览器中加载PDF文件。 在"WordOnline-master"这个项目中,很可能包含了一个完整的Java实现,包括上述步骤。项目可能提供RESTful API,...

    FlashPaper+JAVA实现在线预览功能

    FlashPaper+JAVA实现在线预览功能 titular summary information: FlashPaper+JAVA实现在线预览功能 FlashPaper是一款功能强大的文档转换工具,可以将各种格式的文档转换为SWF格式,以便在线预览。下面将详细介绍...

    asp.net 实现在线预览文档

    "插件包"可能包含了FlexPaper的库文件和必要的插件,这些是实现预览功能的核心组件。开发者需要将这些文件正确地引用到项目中,以便在服务器端处理文件转换,并在客户端呈现预览。 "帮助文档"则提供了关于如何使用...

    java 实现 word 文档的在线预览

    在Java开发中,实现Word文档的在线预览是一项常见的需求,尤其在企业级应用中,例如文档管理系统或者协同办公平台。这项功能可以让用户无需下载原始文件就能查看文档内容,提高工作效率并减少服务器存储压力。本资源...

    aspose实现在线预览word,ppt,excel,pdf文件架包(1)

    本篇将详细介绍如何利用Aspose实现在线预览这些文件类型。 1. **Aspose.Words for .NET** Aspose.Words 是Aspose产品家族中的一个重要组件,专门用于处理Microsoft Word文档(.doc, .docx等)。通过这个库,你可以...

    Asp.net MVC 实现在线预览word、excel、ppt、pdf文件

    在Asp.net MVC框架中,实现在线预览各种办公文档,如Word、Excel、PowerPoint和PDF文件,是一项常见的需求。这通常涉及到技术栈的整合,包括后端处理和前端展示。以下是一些关键知识点: 1. **Asp.net MVC框架**:...

    如何前端实现在线预览pdf、word、xls、ppt等文件

    在仅仅是预览pdf文件且UI要求不高的情况下,可以直接通过a标签href属性实现预览。这种方法简单易行,但缺乏灵活性和交互性。 方式二:使用jquery.media.js插件实现预览 jquery.media.js插件可以实现pdf预览功能...

    java实现在线预览demo

    例如,使用LibreOffice的`ConvertService`接口,可以将一个.doc文件转换为HTML,然后在网页中嵌入这个HTML内容,从而实现预览。 SWFTools是一个用于处理PDF和图像的工具集,它可以将PDF转换为Flash SWF格式,这样...

    jsp开发实现wordexcel的在线预览

    本文将深入探讨如何使用JSP技术来实现Word和Excel文档的在线预览功能,这对于许多Web应用程序来说是一项非常实用的功能,能够极大地提升用户体验。 首先,要实现在线预览,我们需要理解JSP的基础工作原理。JSP是由...

    php实现在线预览pdf生成

    本文将详细讨论如何使用PHP实现在线预览PDF生成,同时也会提及提供的文档和命令说明。 首先,我们要理解PHP生成PDF的基本原理。通常,开发者会借助第三方库来完成这个任务,如TCPDF、FPDF或DOMPDF等。这些库允许PHP...

    jquery实现PDF在线预览 jquery实现在线预览PDF文档

    本文将深入探讨如何使用jQuery实现PDF在线预览功能,这在许多Web应用中都是一种常见且实用的需求。 首先,我们需要理解PDF在线预览的基本原理。PDF(Portable Document Format)是一种通用的文件格式,用于保存文档...

    php实现在线预览功能

    在线预览通常通过在浏览器中渲染文件内容来实现,这需要借助一些第三方库或者服务,因为浏览器本身并不支持直接处理所有类型的文件。对于不同类型的文件,处理方式也有所不同。 1. **PDF预览**: 对于PDF文件,...

    java实现在线预览,仿百度文库

    本项目“java实现在线预览,仿百度文库”旨在利用Java技术栈,模拟百度文库的在线预览体验,让用户能够便捷地在网页上查看各种类型的文档。 首先,我们需要理解Java的基础架构。Java是一种广泛使用的编程语言,尤其...

    aspose实现在线预览word,ppt,excel,pdf文件架包(2)

    这个压缩包“aspose实现在线预览word,ppt,excel,pdf文件架包(2)”显然是Aspose库的一部分,用于帮助开发者实现在线预览这些文件类型的功能。下面我们将详细探讨Aspose的相关知识点及其在实现在线预览中的应用。 1...

Global site tag (gtag.js) - Google Analytics