文档章节

使用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时,看到好的开放电子书时会将链接存到博客的某个页面上...

ApacheCN飞龙
2016/03/15
3.9K
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
2K
4
第五章 Android加载PDF文件的使用

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

忆念成风
2017/11/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
2
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
4
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0
Kernel I2C子系统

备注:所有图片来源于网络 1,I2C协议: 物理拓扑: I2C总线由两根信号线组成,一条是时钟信号线SCL,一条是数据信号线SDA。一条I2C总线可以接多个设备,每个设备都接入I2C总线的SCL和SDA。I...

yepanl
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部