文档章节

使用FlexPaperView在线阅读PDF

你我青春时
 你我青春时
发布于 2014/06/04 14:42
字数 632
阅读 63
收藏 0

需要

FlexPaperViewer.swf

pdf2swf.exe

jsp部分

art.dialog.open(getRootPath() + '/contract/contract!lookContractPDF.xhtml?conid='+conid,{title: '合同PDF阅读窗', width: 750, height: "100%"});


显示PDF的JSP代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.hwxx.utils.CConst"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head>
 <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/style/flexPaper/flexpaper.css" />
 <script type="text/javascript" src="${pageContext.request.contextPath}/script/common/utils.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/script/flexPaper/jquery.min.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/script/flexPaper/flexpaper.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/script/flexPaper/flexpaper_handlers.js"></script>

<body>

    <div id="documentViewer" class="flexpaper_viewer" style="width:100%;height:842px"></div>

        <script type="text/javascript">
              $('#documentViewer').FlexPaperViewer(
                { config : {
//下面为PDF文件的.swf文件的地址
                SWFFile :'${pageContext.request.contextPath}'+'/images/swf/'+'${pdfname}.swf',
                Scale :1,
                ZoomTransition : 'easeOut',
                ZoomTime : 0.5,
                ZoomInterval : 0.2,
                FitPageOnLoad : true,
                FitWidthOnLoad : false,
                FullScreenAsMaxWindow : false,
                ProgressiveLoading : false,
                MinZoomSize : 0.2,
                MaxZoomSize : 5,
                SearchMatchAll : false,
                InitViewMode : 'Portrait',
                RenderingOrder : 'flash',
                StartAtPage : '',
                ViewModeToolsVisible : true,
                ZoomToolsVisible : true,
                NavToolsVisible : true,
                CursorToolsVisible : true,
                SearchToolsVisible : true,
                WMode : 'window',
                localeChain: 'en_US'
            }}
    );
            
        </script>
    
</body>
</html>

java后台

FlexPaperView阅读时是调取.swf文件,所以在上传pdf时最好转换一份成swf文件

上传并转换的代码

/**
     * 上传合同PDF文件
     * @return
     * @throws IOException 
     */
    public void uploadPDF() throws IOException{
        

        String contractid = reqParam("contractid");
        String fileInputFileName = reqParam("fileInputFileName");
        ActionContext ctx = ActionContext.getContext();
        HttpServletResponse sd = ServletActionContext.getResponse();
         sd.setContentType("UTF-8");
         String path= request.getSession().getServletContext().getRealPath("images/uploadPDF");
           File fd=new File(path);  
           
           if(!fd.exists()){
              fd.mkdir();
           }
           try {
               DateFormat formater = new SimpleDateFormat("yyyyMMddHHmmss");
               String picname = formater.format(new Date());
               String savefile = null;
                
               Contract contract = contractService.findbyid(getInt(contractid));
               
                //保存图片信息
                if(file!=null){
                    savefile = picname + fileInputFileName.substring(fileInputFileName.lastIndexOf("."));
                    FileUtils.copyFile(file, new File(fd ,savefile));
                  //把pdf文件转为swf文件
                    Pdf2SwfUtil.pdf2swf(request, savefile);
                    contract.setPdfname(picname);
                }
                
               
                //根据conid找出对应合同,写入合同信息
               
                contract.setModifier(getEmpNum());
                contract.setModifiertime(DateUtil.getDateNow("yyyy-MM-dd"));
                recordLog("上传合同PDF文件-[合同编号:"+contract.getContractlabel()+"]");
                contractService.update(contract);
                
                JsonObject jo = new JsonObject();
                   jo.addProperty("success",true);
                   jo.addProperty("msg","上传成功");
                   Gson gson = new Gson();
                   System.out.println(gson.toJson(jo));
                   response.setContentType("text/html;charset=utf-8");
                   response.getWriter().write(gson.toJson(jo));
                
           } catch (IOException e) {
                   JsonObject jo = new JsonObject();
                  jo.addProperty("success",true);
                  jo.addProperty("msg","上传成功");
                  Gson gson = new Gson();
                  System.out.println(gson.toJson(jo));
                  response.setContentType("text/html;charset=utf-8");
                  response.getWriter().write(gson.toJson(jo));
               e.printStackTrace();
           }
           
        
        
    
        
        
    }

   Pdf2SwfUtil工具类

public class Pdf2SwfUtil {  

    /**
     * 将pdf文件转换为swf文件
     * @param name
     * @return
     * @throws IOException 
     */
    public static boolean pdf2swf(HttpServletRequest request, String name)
    {
        try
        {
            //获取 pdf文件夹的路径
            String pdfPath = getDirectory(request, "images\\uploadPDF");
            //获取pdf文件夹中的某个文件路径
            String pdfFile = pdfPath.concat("\\" + name);
            //获取swf文件夹的路径
            String swfPath = getDirectory(request, "images\\swf");
            //获取swf文件夹中的某个文件路径
            String swfFile = swfPath.concat("\\" + name);
            //调用tools文件夹中的pdf2swf工具
            String toolsPath = getDirectory(request, "SWFTools");
            Runtime run = Runtime.getRuntime();
            Process process = run.exec(toolsPath+ "\\pdf2swf.exe  -t  " + pdfFile
                    + "   -o   " + swfFile.replace(".pdf",".swf")+" -T 9 ".replace("Program Files","'Program Files'"));
            process.waitFor();
            return true;
        } catch (Exception e)
        {
            return false;
        }  

    }

    /**
     * 获取某个文件夹的路径
     * @param request
     * @param directoryName
     * @return
     */
    public static String getDirectory(HttpServletRequest request, String directoryName)
    {
        String directory = request.getSession().getServletContext()
                .getRealPath(directoryName);
        return directory;
    }


}


© 著作权归作者所有

共有 人打赏支持
你我青春时
粉丝 1
博文 20
码字总数 2690
作品 0
武汉
后端工程师
计算机开放电子书汇总

开放书是指协议为Public Domain、Creative Common,以及一些开源软件协议(MIT、Apache、GPL等等)的图书。我在平时逛论坛或者刷github时,看到好的开放电子书时会将链接存到博客的某个页面上...

龙哥盟飞龙
2016/03/15
3.3K
4
Beego 开发的类百度文库 - DocHub

起初开发这套程序,是想自己做一个IT行业的文库站点,也就是现在的IT文库(http://wenku.it),当初给文库起名就叫,但是决定开源出来之后,觉得这样不妥,于是起了个叫的名字。 毕竟,有个Git...

皇虫
05/15
0
0
高保真PDF至HTML转换--pdf2htmlEX

pdf2htmlEX可以将PDF转换成HTML,不同于传统类似软件,它可以: 在HTML文件中精确显示原生文本 保持PDF中的字体,颜色,位置 可以选择,复制,搜索 生成的文件大小与解压缩后的PDF文件相当,...

王璐
2012/09/05
33.1K
12
DocHub 文库系统 v1.1 发布,类百度文库开源实现方案

DocHub文库系统是使用Go语言的Beego框架开发实现的文库解决方案,使用对商业友好的Apache2.0开源协议进行开源,支持office文档、PDF文档、TXT、EPUB、MOBI等多种格式文档的在线阅读和浏览。 ...

皇虫
07/09
0
0
第五章 Android加载PDF文件的使用

1. Android 加载PDF   早上看到的Android加载PDF的一个要求,然后想起之前看到过有这么个例子。github上已经开源了,一个第三方的依赖库。开源很久了,使用起来比较稳定。这里记录下。 1....

忆念成风
2017/11/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

docker update:更新一个或多个容器的配置

更新容器的配置 docker update:更新一个或多个容器的配置。 具体内容请访问:https://docs.docker.com/engine/reference/commandline/update/#options 语法:docker update [OPTIONS] CONTA...

lwenhao
今天
1
0
unload事件

unload事件不触发的原因分析 1.代码位置不对,应该优先加载,不能放到回调函数中 2.浏览器不支持 3.最可能的原因,unload事件中触发的函数是一个异步执行的函数,浏览器是不允许在窗口关闭之后在...

狮子狗
今天
1
0
DbForge Schema Compare for MySQL入门教程:如何连接到数据库

【dbForge Schema Compare for MySQL下载】 要创建连接: 1. 在“Connection” 工具栏上单击“New Connection”按钮 。 2. 在“Host” 框中输入主机名。 3. 在“Port” 框中输入端口信息。默...

Miss_Hello_World
今天
1
0
spring中事务的应用

spring中事务管理的两种方式 编程式事务使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务是建立...

狂奔的熊二
今天
0
0
公众号关联微信小程序

公众号关联小程序发送关联通知,对于推广小程序有着很大的帮助。所以问题来了,怎么做到在公众号关联小程序发送关联通知呢? 一:开发中遇到的问题 之前在开发过程中发现,公众号已经关联小程...

Code辉
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部