關於通過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