`
Kai_Ge
  • 浏览: 72876 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Swftools+FlexPaper实现PDF上传在线预览功能

阅读更多

      最近项目需要在线预览功能,经过各方面的资料研究,可行的方案是swftools+FlexPaper,现把实现思路及碰到问题总结一下:

      1、swftools-2013-04-09-1007.exe提供pdf转swf文件,供FlexPaper调用。

      2、FlexPaper由开源变为商业化,新版本只提供前十页显示,购买后才能实现全功能,功能更强大,支持FLASH、HTML4、HTML5等模式,为免费实现在线预览功能,本项目在此使用此前的开源版本,但是自带水印,介意的化可考虑破解版,网上自寻。

      3、本项目仅支持pdf上传预览,如扩展word上传,可考虑word转pdf在转swf。

      4、FlexPaperViewer.swf和FlexPaperViewer.htm必须放在WebRoot根目录下才可以,这也是多次尝试之后得出的结论,网上的资料大致相同,但是根据步骤始终无法实现正常预览的原因。

      5、服务器必须安装swftools,以保证上传文件时调用pdf转swf文件。

     

目录结构如下:


 

显示效果如下:

 

================华丽的分割线==========以下为代码==============

1、文件上传时调用:

// =================================PDF2SWF===============================================
			String uploadDir = request.getSession().getServletContext().getRealPath("/");
			String pdfPath = ""; 
			if (list.size() > 0) {
				for (int i = 0; i < list.size(); i++) {
					DicWsjsFj wj = new DicWsjsFj();
					wj.setMid(id);
					wj.setFjmc(list.get(i).get("name").toString());
					wj.setPath(list.get(i).get("newname").toString());
					wsjsDao.saveOrUpdateFj(wj);
					// =================================PDF2SWF===============================================
					pdfPath = uploadDir.substring(0, uploadDir.length()-1) + list.get(i).get("newname").toString().replace("/", "\\");
					PDF2SwfHelper.execPdfToSwf(pdfPath);
//					request.getSession().setAttribute("filePath", pdfPath);
				}
			}

 

2、PDF2SwfHelper.java

package com.zljy.oa.util;

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

public class PDF2SwfHelper {


	public static void execPdfToSwf(String pdfPath) {
		String SWFPath = PropUtil.getProperties("SWFPath");
		Process process = null;
		String cmd = "\"" + SWFPath + "\\pdf2swf.exe\" \"" + pdfPath + "\" -s flashversion=9 \"" + pdfPath + ".swf\"";
		System.out.println("cmd--->" + cmd);
		
		try {
			process = Runtime.getRuntime().exec(cmd);// 执行命令
			
			System.out.print(loadStream(process.getInputStream()));
			System.err.print(loadStream(process.getErrorStream()));
			System.out.print(loadStream(process.getInputStream()));
			int result = process.waitFor();
			if (result == 0) {
				try {
					// TODO:
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("cmd over!");
	}
	
	public static void main(String[] args){
		try {
			//System.out.println(Runtime.getRuntime().exec("cmd /c start c://swf.bat"));
			System.out.println("11");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		execPdfToSwf("D:\\ActivitiTomcat\\webapps\\oa\\upload\\winPlan\\201503201530571522746426268764261.pdf");
	}
	
	private static String loadStream(InputStream in) throws IOException {
		int ptr = 0;
		// 把InputStream字节流 替换为BufferedReader字符流
		BufferedReader reader = new BufferedReader(new InputStreamReader(in));
		StringBuilder buffer = new StringBuilder();
		while ((ptr = reader.read()) != -1) {
			buffer.append((char) ptr);
		}
		return buffer.toString();
	}
}

 

3、前台页面

<a href="${pageContext.request.contextPath}/FlexPaperViewer.htm?filePath=${fn:substring(fj.path,1,fn:length(fj.path))}.swf">在线阅读(仅支持PDF格式)</a><br/>

 

4、 FlexPaperViewer.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<!-- saved from url=(0014)about:internet --> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">	
    <head> 
        <title>在线阅读</title>         
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <style type="text/css" media="screen"> 
			html, body	{ height:100%; }
			body { margin:0; padding:0; overflow:auto; }   
			#flashContent { display:none; }
        </style> 
		
		<script type="text/javascript" src="js/swfobject/swfobject.js"></script> 
		<script type="text/javascript" src="js/flexpaper_flash_debug.js"></script> 
		<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script> 
		
		<script type="text/javascript"> 
            <!-- For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. --> 
            var swfVersionStr = "10.0.0";
            <!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. -->
            var xiSwfUrlStr = "playerProductInstall.swf";
            var swfFile = getParameter("filePath");
            if(swfFile == ""){
            	swfFile = "flexPaper/Paper.swf";
            }
            var flashvars = { 
                  SwfFile : escape(swfFile),
				  Scale : 1.0, 
                  StartAtPage:1,
				  ZoomTransition : "easeOut",
				  ZoomTime : 0.5,
  				  ZoomInterval : 0.2,
  				  FitPageOnLoad : true,
  				  FitWidthOnLoad : false,
  				  PrintEnabled : true,
  				  FullScreenAsMaxWindow : false,
  				  ProgressiveLoading : true,
  				  
//  				  PrintToolsVisible : true,
//  				  ViewModeToolsVisible : true,
//  				  ZoomToolsVisible : true,
//  				  FullScreenVisible : true,
//  				  NavToolsVisible : true,
//  				  CursorToolsVisible : true,
//  				  SearchToolsVisible : true,
  				  
  				  localeChain: "en_US"
				  };
				  
			 var params = {};
            params.quality = "high";
            params.bgcolor = "#ffffff";
            params.allowscriptaccess = "sameDomain";
            params.allowfullscreen = "true";
            var attributes = {};
            attributes.id = "FlexPaperViewer";
            attributes.name = "FlexPaperViewer";
            swfobject.embedSWF(
                "FlexPaperViewer.swf", "flashContent", 
                "1024", "768",
                swfVersionStr, xiSwfUrlStr, 
                flashvars, params, attributes);
			swfobject.createCSS("#flashContent", "display:block;text-align:left;");
			
			function getParameter(param){
				var query = window.location.search;
				var iLen = param.length;
				var iStart = query.indexOf(param);
				if (iStart == -1)
				   return "";
				iStart += iLen + 1;
				var iEnd = query.indexOf("&", iStart);
				if (iEnd == -1)
				   return query.substring(iStart);
				return query.substring(iStart, iEnd);
			}
        </script> 
        
    </head> 
    <body> 
    	<div style="position:absolute;left:10px;top:10px;"> 
	        <div id="flashContent"> 
	        	<p> 
		        	To view this page ensure that Adobe Flash Player version 
					10.0.0 or greater is installed. 
				</p> 
				<script type="text/javascript">
				    var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://");
				    document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='"
									+ pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>"); 
				</script> 
	        </div> 
        </div> 
        <!-- 
        <div style="position:absolute;left:750px;top:10px;font-family:Verdana;font-size:9pt;"> 
        <table border="0" width="230"> 
	        <tr><th colspan=3>Operations</th></tr> 
	        <tr><td>loadSwf</td><td><input type=text style="width:70px;" id="txt_swffile" value="Paper.swf"></td><td><input type=submit value="Invoke" onclick="getDocViewer().loadSwf($('#txt_swffile').val())"></td></tr> 
	        <tr><td>fitWidth</td><td></td><td><input type=submit value="Invoke" onclick="getDocViewer().fitWidth()"></td></tr> 
	        <tr><td>fitHeight</td><td></td><td><input type=submit value="Invoke" onclick="getDocViewer().fitHeight()"></td></tr> 
	        <tr><td>gotoPage</td><td><input type=text style="width:70px;" id="txt_pagenum" value="3"></td><td><input type=submit value="Invoke" onclick="getDocViewer().gotoPage($('#txt_pagenum').val())"></td></tr> 
	        <tr><td>getCurrPage</td><td></td><td><input type=submit value="Invoke" onclick="alert('Current page:' + getDocViewer().getCurrPage())"></td></tr> 
	        <tr><td>nextPage</td><td></td><td><input type=submit value="Invoke" onclick="getDocViewer().nextPage()"></td></tr> 
	        <tr><td>prevPage</td><td></td><td><input type=submit value="Invoke" onclick="getDocViewer().prevPage()"></td></tr> 
	        <tr><td>setZoom</td><td><input type=text style="width:70px;" id="txt_zoomfactor" value="1.30"></td><td><input type=submit value="Invoke" onclick="getDocViewer().setZoom($('#txt_zoomfactor').val())"></td></tr> 
	        <tr><td>searchText</td><td><input type=text style="width:70px;" id="txt_searchtext" value="text"></td><td><input type=submit value="Invoke" onclick="getDocViewer().searchText($('#txt_searchtext').val())"></td></tr> 
	        <tr><td>switchMode</td><td><input type=text style="width:70px;" id="txt_viewmode" value="Tile"></td><td><input type=submit value="Invoke" onclick="getDocViewer().switchMode($('#txt_viewmode').val())"></td></tr> 
	        <tr><td>printPaper</td><td></td><td><input type=submit value="Invoke" onclick="getDocViewer().printPaper()"></td></tr> 
        </table> 
        <br/><br/> 
        <table border="0" width="230"> 
        	<tr><th>Event Log</th></tr> 
        	<tr><td><textarea rows=6 cols=28 id="txt_eventlog" style="width:215px;"></textarea></td></tr> 
        	<tr><td><input type=text style="width:215px;" id="txt_progress" value=""></td></tr> 
	    </table> 
        </div> 
        -->
   </body> 
</html> 

 

附:

1、FlexPaperDemo仅含前台例子

2、swftools-2013-04-09-1007安装文件

PS:文件10M限制,安装文件自行百度 

  • 大小: 166.2 KB
  • 大小: 268.5 KB
分享到:
评论

相关推荐

    openoffice+swftools+flexpaper在线预览文档

    标题 "openoffice+swftools+flexpaper在线预览文档" 涉及到的是一个技术解决方案,用于在Web环境中实现文档的在线预览。这个方案主要包括三个关键组件:OpenOffice、SwfTools和FlexPaper。 1. **OpenOffice**: ...

    .net+swftools+flexpaper pdf转swf实现在线预览 在线文库效果 可运行

    《.NET + SWFTools + FlexPaper:PDF转SWF实现在线预览的全面解析》 在数字化时代,为了提供方便快捷的文档查看体验,许多网站和应用开始采用在线预览功能,尤其对于PDF文档。本文将深入探讨如何利用.NET框架、...

    openoffcie+swftools+flexpaper实现类似百度文库的阅读效果

    总的来说,通过OpenOffice的文档解析能力,SwfTools的SWF转换功能,以及FlexPaper的前端展示技术,我们可以构建一个类似百度文库的在线阅读平台,让用户在网页上便捷、舒适地浏览和预览各种类型的文档。这样的系统...

    Java实现文档在线预览demo(openoffice+swfTools+FlexPaper)

    本篇文章将详细讲解如何利用Java技术栈,结合OpenOffice、swfTools和FlexPaper,来实现一个文档在线预览的简易DEMO。 首先,我们来看核心组件: 1. **OpenOffice**:这是一个开源的办公软件套件,包含了一个用于...

    Java+FlexPaper+swfTools_仿百度文库文档在线预览系统设计与实现

    本文档将详细阐述一个模仿百度文库文档在线预览系统的实现过程,该系统通过结合Java、FlexPaper和swfTools等技术手段,实现了对上传文档的在线预览功能,同时禁止了用户直接下载原始文档的功能。 #### 如何将文档转...

    java+swfTools+openoffice+FlexPaper在线阅读实例

    Java、SWFTools、OpenOffice 和 FlexPaper 是构建在线阅读平台的关键技术,它们共同作用于创建一个高效且用户友好的文档预览系统。这个实例主要关注如何将这些工具结合使用,为用户提供PDF、DOC等常见格式文档的在线...

    Java+FlexPaper+swfTools 文档在线阅读

    Java+FlexPaper+swfTools 是一种常见的技术组合,用于实现文档在线预览和阅读功能。这个技术栈主要由三个核心组件组成:Java、FlexPaper 和 swfTools。下面将详细解释这三个组件以及如何整合它们来创建一个文档在线...

    Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.pdf

    ### Java+FlexPaper+swfTools 仿百度文库文档在线预览系统设计与实现 本文将详细介绍如何使用Java结合FlexPaper和swfTools技术来实现一个类似百度文库的文档在线预览系统。该系统的主要功能是允许用户在线浏览各种...

    PDF文件在线预览+c#+flexpaper

    本文将深入探讨如何使用C#编程语言结合FlexPaper和SWFTools来实现高效的PDF在线预览功能。 FlexPaper是一款开源的JavaScript库,专为在网页上展示PDF和图像文件而设计。它提供了流畅的用户体验,支持多页滚动、缩放...

    pdf2swf+flexpaper解决pdf在线阅读(类百度文库)

    SWF是Adobe Flash Player支持的文件格式,可以在网页中播放,因此`pdf2swf`常用于创建可在线浏览的PDF预览版本。 2. **SWFTools**: SWFTools是一系列用于处理SWF文件的开源工具集合,包括pdf2swf、image2swf、rafl...

    FlexPaper+SWFTools+ASP.NET实现仿百度文库源码

    FlexPaper+SWFTools+ASP.NET实现仿百度文库源码是一种在线文档预览和分享的解决方案,它结合了多种技术来提供类似百度文库的功能。这个系统的主要目的是让用户能够方便地上传、浏览和分享各种格式的文档,如PDF、DOC...

    java实现附件预览(openoffice+swftools+flexpaper)实例

    本实例通过整合OpenOffice、SWFTools和FlexPaper,提供了一种有效的方法来实现这个功能,使得用户可以在浏览器中预览Word、Excel、PPT和TXT等格式的文件。 1. **OpenOffice**: OpenOffice是一个开源的办公软件套件...

    Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.docx

    根据提供的文档标题、描述、标签以及部分内容,本文将详细介绍如何使用Java、FlexPaper及swfTools来设计并实现一个类似于百度文库的文档在线预览系统。本系统旨在让用户能够在线预览各种类型的文档,无需下载或安装...

    Java-FlexPaper-swfTools-仿百度文库文档在线预览系统设计与实现.docx

    Java-FlexPaper-swfTools-仿百度文库文档在线预览系统设计与实现 本文主要介绍了使用 Java、FlexPaper 和 swfTools 实现在线文档预览系统的设计和实现。该系统可以将上传的文档(包括 ppt、word、excel、txt 等)...

    FlexPaper+swftools+jodConverter

    FlexPaper、SwfTools 和 JodConverter 是三个在文档在线预览领域中广泛使用的开源工具。下面将分别介绍这三个工具及其在文档处理中的作用。 1. **FlexPaper**: FlexPaper 是一款强大的在线文档查看和转换解决方案...

    在线展示文档实例c#:FLEXPAPER+SWFTOOLS+office2016+vs15

    本文将详细讲解一个基于C#的在线文档展示实例,该实例利用了FLEXPAPER插件、SWFTOOLS以及Office 2016来实现从Office文件到PDF再到SWF的转换,最终实现在线展示的效果。 首先,我们来了解FLEXPAPER。FLEXPAPER是一款...

    FlexPaper+SWFTools+ASP.NET(支持PDF).7z

    ASP.NET 是微软开发的一个用于构建Web应用程序的框架,它可以与FlexPaper和SWFTools结合,提供服务器端的支持,创建动态、交互式的PDF预览功能。 FlexPaper 的主要特点包括: 1. **跨平台**:FlexPaper 可以在各种...

    swftools、flexpaper等工具包

    swftools、flexpaper等工具包。swftools用于将pdf转换为swf文件,而flexpaper则可以实现对swf文件的播放,从而实现pdf文件的预览。

    在线文档浏览(OppenOfiice+FlexPaper+swftools)

    总的来说,OpenOffice、FlexPaper和Swftools的组合为开发者提供了一个高效且经济的在线文档预览解决方案,对于那些需要在网站或应用中集成文档预览功能的项目来说,这是一个极具吸引力的选择。通过深入理解和运用...

Global site tag (gtag.js) - Google Analytics