美文网首页我爱编程
根据pdf的url在线浏览pdf

根据pdf的url在线浏览pdf

作者: 约德尔人winter | 来源:发表于2018-04-15 21:33 被阅读0次

    通过java controller将pdf下载到web系统中

    package com.example.getorder.Controller;
    
    import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import sun.misc.BASE64Decoder;
    
    import javax.servlet.http.HttpServletRequest;
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    @Controller
    @RequestMapping("textcontroller")
    public class TestController {
    
    
        @ResponseBody
        @RequestMapping("downloadpdf")
        public String getStream(String uri,HttpServletRequest request) {
    
            try {
               String savePath=  downLoadFromUrl(request,uri);
               return savePath;
            }catch (Exception e)
            {
                e.printStackTrace();
            }
    
            return "";
        }
    
        /**
         * 从网络Url中下载文件
         * @param urlStr
         * @throws IOException
         */
        public static String  downLoadFromUrl(HttpServletRequest request, String urlStr) throws IOException{
            URL url = new URL(urlStr);
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            //设置超时间为3秒
            conn.setConnectTimeout(3*1000);
            //防止屏蔽程序抓取而返回403错误
            conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
    
            //得到输入流
            InputStream inputStream = conn.getInputStream();
            //获取自己数组
            byte[] getData = readInputStream(inputStream);
            String basePath="/WEB-INF/pdfjs/web";
            String path = request.getSession().getServletContext().getRealPath(basePath);
           // String savePath=TestController.class.getClassLoader().getResource("").getPath();
            //文件保存位置
            File saveDir = new File(path);
            if(!saveDir.exists()){
                saveDir.mkdir();
            }
            File file = new File(saveDir+File.separator+"dingdan.pdf");
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(getData);
            if(fos!=null){
                fos.close();
            }
            if(inputStream!=null){
                inputStream.close();
            }
    
            return path+"dingdan.pdf";
    
         //   System.out.println("info:"+url+" download success");
    
        }
    
    
    
        /**
         * 从输入流中获取字节数组
         * @param inputStream
         * @return
         * @throws IOException
         */
        public static  byte[] readInputStream(InputStream inputStream) throws IOException {
            byte[] buffer = new byte[1024];
            int len = 0;
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            while((len = inputStream.read(buffer)) != -1) {
                bos.write(buffer, 0, len);
            }
            bos.close();
            return bos.toByteArray();
        }
    
    
    }
    

    再用一行代码将保存到本地的pdf打开

    <a href="#" onclick="window.open('<%=basePath%>pdfjs/web/viewer.html?file=/pdfjs/web/dingdan.pdf','PDF','width:50%;height:50%;top:100;left:100;');">查看pdf</a> 
    

    即可

    相关文章

      网友评论

        本文标题:根据pdf的url在线浏览pdf

        本文链接:https://www.haomeiwen.com/subject/qvyjkftx.html