文档章节

使用FlexPaperView在线阅读PDF

你我青春时
 你我青春时
发布于 2014/06/04 14:42
字数 632
阅读 84
收藏 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时,看到好的开放电子书时会将链接存到博客的某个页面上...

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

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

皇虫
2018/05/15
13.7K
4
高保真PDF至HTML转换--pdf2htmlEX

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

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

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

皇虫
2018/07/09
4.2K
4
第五章 Android加载PDF文件的使用

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

忆念成风
2017/11/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用 4G 工作是什么体验

七月开始,因为工作原因,在公司附近租了个住处,方便工作。离公司近了,感觉就是不一样,之前每天 5:30 就要起床赶地铁,现在可以睡到自然醒,一看才 7 点,悠闲的起床洗漱,踱步到公司,都...

zzxworld
15分钟前
4
0
sonar报错volatile

问题发生 原先代码如下: //认证授权码private static volatile String AUTHORIZATION_CODE = "init"; git push 之后,sonar认为这是个bug检测报告截图如下: 分析排查 解释说明: Markin...

开源小菜鸟2333
20分钟前
3
0
《Java实践指南》--读后

闲读《Java实践指南》... 1.lvy 某些项目中能够看到ivy.xml。早期使用ant的项目中,常常用ivy.xml来下载项目依赖。 2.ant 作为java程序员,应该都知道ant,虽然可能用过的人不多。为什么ant...

RippleChan
22分钟前
2
0
前端:固定表格(table)表头的实现方式

在写插件 bootstrap table 的时候,当数据过多的时候,需要对表格的 thead 进行固定,然后滚动表格的 tbody 。但是在实际的操作上,花了很多的时间在这个问题上,到现在也没有找到完美的解决...

前端老手
23分钟前
5
0
第五章 spring-connet之AnnotationConfigUtils

前言 AnnotatedBeanDefinitionReader是AnnctionConfig相关上下文与AnnotationConfigUtils的桥梁。还有一个作用是解析class成为BeanDefinitionHolder,注册到容器里面。AnnotationConfigUtils...

鸟菜啊
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部