关于通过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。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM