首页 > 代码库 > linux在线预览pdf文件开发思路

linux在线预览pdf文件开发思路

准备:swftools,flexpaper

基本思路:

1,将pdf文件转化成swf文件

2,使用flexpaper预览swf文件

主要代码:

1,在linux中安装swftools.官网下载swftools 安装包,解压

2,./configure --prefix=安装路径

   make install 

执行完之后,执行pdf2swf -help 如果显示。说明安装成功

如果执行pdf2swf -help  显示commond not find 的话,可能需要配置swftools的环境变量,具体配置请百度^_^

3.在java中调用linux shell 将pdf 转化成swf

 

String [] cmd={"/bin/sh","-c","pdf2swf "+要转化的文件路径/文件名称.pdf+" "+  转化后的文件路径/文件名称.swf};

Process pro = Runtime.getRuntime().exec(cmd);  

dealWith(pro); 
pro.waitFor();//等待子进程的结束,子进程就是系统调用文件转换这个新进程

dealWith()是个方法了,里面可以打印执行过程

    private void dealWith(final Process pro){    
        // 下面是处理堵塞的情况    
        try {    
            new Thread(){    
                public void run(){    
                    BufferedReader br1 = new BufferedReader(new InputStreamReader(pro.getInputStream()));    
                    System.out.println("********************"+br1);
                    String text;    
                    try {    
                        while ( (text = br1.readLine()) != null) {    
                            System.out.println("==================="+text);    
                        }    
                    } catch (IOException e) {    
                        e.printStackTrace();    
                    }    
                }    
            }.start();    
        } catch (Exception e) {    
            e.printStackTrace();    
        }    
            
        try {    
            new Thread(){    
                public void run(){    
                    BufferedReader br2 = new BufferedReader(new InputStreamReader(pro.getErrorStream()));//这定不要忘记处理出理时产生的信息,不然会堵塞不前的    
                    System.out.println("#########################"+br2);
                    String text;    
                    try {    
                        while( (text = br2.readLine()) != null){    
                            System.err.println("------------------"+text);    
                        }    
                    } catch (IOException e) {    
                        e.printStackTrace();    
                    }    
                }    
            }.start();    
        } catch (Exception e) {    
            e.printStackTrace();    
        }    
    } 

4.jsp中,

引入flexpaper的class 和js

 <link rel="stylesheet" type="text/css" href="http://www.mamicode.com/${ctx}/pages/flexPaper/css/flexpaper.css" />

<script src="http://www.mamicode.com/${ctx}/pages/flexPaper/js/flexpaper.js" charset="UTF-8"></script>
<script src="http://www.mamicode.com/${ctx}/pages/flexPaper/js/flexpaper_handlers.js" charset="UTF-8"></script>

 <div id="documentViewer" class="flexpaper_viewer"   style="width:770px;height:500px;"></div> 

$(‘#documentViewer‘).FlexPaperViewer(
                { config : {
                     SWFFile : fileURL,
                    Scale : 0.6,
                    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‘
                }}
        );

 

 

以上为主要实现代码。flexpaper的使用可以参考官方下载包,将官方下载包直接丢到tomcat中是可以运行的。

 

-------------------------------------------------------------------------------------------------------------------------------------------

先写这么多,再次感谢伟大的各界网友和IT同行,提供的各种资料给我与莫大的帮助。thank you!