关于通过pdf.js显示本地pdf文件和跨域获取文件

不多说,项目需要展示本地pdf文件,因为浏览器兼容问题,就用了<iframe>直接打开了,不过最上面的toolbar是什么鬼啊,需求变更后又要求去掉什么下载之类的功能,然后就发现了pdf.js可以解决这个问题,不过只能打开项目里面的图片!

网上找了好多方法,比如set head,设置浏览器安全等级,设置php页面等等,但是并没有效果,然后看到论坛说后台用流处理一下可以解决这种跨域取文件的问题,所以解决办法就有了:

页面依然是打开viewer.html,不过file路径要换成后台处理的stream:

1 <iframe src="<c:url value="plugins/pdfjs/web/viewer.html" />?file=<%=basePath%>apply/lcappoint/pdfStreamHandeler.do" width="100%" height="800"></iframe>

然后,后台也很简单,就是获取file,转换成流,然后用response.getOutputStream.write()写到前台就好:

    @RequestMapping(value = "/pdfStreamHandeler")
    @ResponseBody
    public void pdfStreamHandeler(String filePath, HttpServletRequest request, HttpServletResponse response) {
        filePath = "d://a.pdf";
        File file = new File(filePath);
        byte[] data = null;
        try {
            FileInputStream input = new FileInputStream(file);
            data = new byte[input.available()];
            input.read(data);
            response.getOutputStream().write(data);
            input.close();
        } catch (Exception e) {
            logger.error("pdf文件处理异常:" + e.getMessage());
        }

    }

 然后就能打开本地的pdf文件了。

因为格式都是可控的,才是我们需要的嘛。

小白水平有限,只是在大咖的思路下弄了一下实现,这只是简单的demo。

 

posted on 2016-12-02 16:40  ViiJay  阅读(20252)  评论(8编辑  收藏  举报

导航