SpringBoot使用pdf.js實現pdf文件在線預覽

1、pdf.js下載地址

https://github.com/mozilla/pdf.js

2、文件目錄如圖示例

針對於pdf方面有用的只是pdf這個包下面,和viewer.html這個html頁面

3、viewer.html是我們用來展示pdf的頁面不需要改

4、但是viewer.js中有些東西使我們需要注意的

(1)webViewerInitialized()這個方法

            var appConfig = PDFViewerApplication.appConfig;
            var file = void 0;
            var queryString = document.location.search.substring(1);
            var params = (0, _ui_utils.parseQueryString)(queryString);
            file = 'file' in params ? params.file : appConfig.defaultUrl;

三元表達式代表最後得到的這個file就是,我們會去訪問的地址(這塊看不懂的可以先往下看)

(2)首先我們頁面一般都需要有類似於按鈕的地方去發請求

假設,我們發送的請求是:window.open("/viewer.html?file=/showPDFFile/1");

這就是我們上面將viewer.html放在resources下面的原因,我們需要能夠直接訪問到它

  (3)現在我們訪問到了viewer.html,程序走到了viewer.js,webViewerInitialized()這個方法就起作用了,它會解析出我們請求的file參數的值,然後去訪問file值。(也就是說我們這個例子會去訪問/showPDFFile/1這個地址)

(4)最後我們的後臺Controller層,寫一個下載文件的方法就ok了,

    @RequestMapping("showPDFFile/{id}")
    @ResponseBody
    public void showPDFFile(@PathVariable("id") Integer id,HttpServletResponse response){
        MMPojo mmPojo = mmService.getById(id);
        File file = new File(mmPojo .getFilePath());
        if (file.exists()) {
            byte[] data = null;
            FileInputStream input=null;
            try {
                input= new FileInputStream(file);
                data = new byte[input.available()];
                input.read(data);
                response.getOutputStream().write(data);
            } catch (Exception e) {
                System.out.println("pdf文件處理異常:" + e);
            }finally{
                try {
                    if(input!=null){
                        input.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

(5)這樣我們的pdf文件就完美展示成功了,但是這個pdf文件展示是沒有目錄的哈。

(6)建議呢,直接下載我這一套模板,照着改就行,用官網的可能有些地方,會比較難搞。

(7)模板地址:https://download.csdn.net/download/weixin_42152604/11945846

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章