国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java后端返回PDF預(yù)覽給前端

這篇具有很好參考價(jià)值的文章主要介紹了Java后端返回PDF預(yù)覽給前端。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前端要預(yù)覽服務(wù)器PDF 可直接將要blob流返回給前端 即可用瀏覽器自帶pdf預(yù)覽功能打開(kāi),現(xiàn)有兩種方式

方式1 返回blob流給前端 代碼如下? ? ? ?

    @PostMapping(value = "/preview")
    @ResponseBody
    public void showPdf(HttpServletResponse response) {
        try {
            File file = new File("filePath");
            OutputStream out = null;
            try (BufferedInputStream br = new BufferedInputStream(new FileInputStream(file));
            ) {
                byte[] bs = new byte[1024];
                int len;
                response.reset(); // 非常重要
                URL u = new URL("file:///" + "filePath");
                String contentType = u.openConnection().getContentType();
                response.setContentType(contentType);
                response.setHeader("Content-Disposition", "inline;filename="
                        + "preview.pdf");
                out = response.getOutputStream();
                while ((len = br.read(bs)) > 0) {
                    out.write(bs, 0, len);
                }
                out.flush();
                out.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

此時(shí) 前端解析可直接拿返回的文件流 例子如下

let blob = this.response;
          const binaryData = [];
          binaryData.push(blob);
          const url = window.URL.createObjectURL(new Blob(binaryData, { type: 'application/pdf' }));
          window.open(url);

但有的時(shí)候 不想返回文件流 可把文件返回為base64 (注意 base64可能超長(zhǎng))此時(shí)代碼修改如下

        File file = new File("filePath");
            OutputStream out = null;
            try (BufferedInputStream br = new BufferedInputStream(new FileInputStream(file));
                         ByteArrayOutputStream outStream = new ByteArrayOutputStream();
            ) {
                int len;
                URL u = new URL("file:///" + "filePath");
                String contentType = u.openConnection().getContentType();
                byte[] buffer = new byte[1024];
                //每次讀取的字符串長(zhǎng)度,如果為-1,代表全部讀取完畢
                //使用輸入流從buffer里把數(shù)據(jù)讀取出來(lái)
                while ((len = br.read(buffer)) != -1) {
                    //用輸出流往buffer里寫入數(shù)據(jù),中間參數(shù)代表從哪個(gè)位置開(kāi)始讀,len代表讀取的長(zhǎng)度
                    outStream.write(buffer, 0, len);
                }
                // 對(duì)字節(jié)數(shù)組Base64編碼
                Base64Encoder base64 = new Base64Encoder();
                String base64Str = replaceEnter(base64.encode(outStream.toByteArray()));


            }
        } catch (Exception e) {
        }

前端修改如下文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-720961.html

 let base64 = resBase64.data.base64;
      base64 = base64.replace(/[\n\r]/g, '')
      const raw = window.atob(base64)
      const rawLength = raw.length
      const uInt8Array = new Uint8Array(rawLength)
      for (let i = 0; i < rawLength; ++i) {
        uInt8Array[i] = raw.charCodeAt(i)
      }
      const url = window.URL.createObjectURL(new Blob([uInt8Array], { type: resBase64.data.contentType }));
      window.open(url);

到了這里,關(guān)于Java后端返回PDF預(yù)覽給前端的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端用 js-file-download組件下載后端返回的pdf,word,excel文件

    后端返回的pdf,word,excel的文件流導(dǎo)出需要讓瀏覽器下載文件 1、安裝js-file-download組件 2、在對(duì)應(yīng)的頁(yè)面引用 3、在接口返回結(jié)果后直接調(diào)用即可

    2024年02月08日
    瀏覽(96)
  • 【Vue】后端返回文件流,前端預(yù)覽文件

    【Vue】后端返回文件流,前端預(yù)覽文件

    ? 文件預(yù)覽效果

    2024年01月17日
    瀏覽(91)
  • 前端預(yù)覽pdf文件

    前端預(yù)覽pdf文件

    在前端開(kāi)發(fā)中,很多時(shí)候我們需要進(jìn)行pdf文件的預(yù)覽操作,下面給出幾種常見(jiàn)的預(yù)覽pdf文件的方法: 如果項(xiàng)目對(duì)pdf的預(yù)覽功能要求不高,只是要求能夠看的話,可以直接在瀏覽器上打開(kāi)pdf文件的地址,代碼如下 PDF.js是一個(gè)由Mozilla開(kāi)發(fā)的JavaScript庫(kù),用于在網(wǎng)頁(yè)上呈現(xiàn)和操作

    2024年02月15日
    瀏覽(21)
  • 前端如何預(yù)覽pdf文件流

    前端如何預(yù)覽pdf文件流

    通過(guò)查找資料,可以找到如下幾種方案,其中最為成熟的方案是vue-pdf 1. iframe 既可以用來(lái)瀏覽本地static下的文檔,也可以預(yù)覽后端返回的文件流文檔 2. vue-pdf?較為完善的vue預(yù)覽pdf的方案 3. vueshowpdf?網(wǎng)絡(luò)上找到的一個(gè)他人封裝的pdf組件 優(yōu)點(diǎn) 缺點(diǎn) 原理 iframe/object/embed 簡(jiǎn)單易用

    2024年02月17日
    瀏覽(24)
  • 前端實(shí)現(xiàn)window.open實(shí)現(xiàn)pdf預(yù)覽以及請(qǐng)求時(shí)攜帶請(qǐng)求頭通過(guò)后端權(quán)限校驗(yàn)

    需求是點(diǎn)擊預(yù)覽時(shí) 跳轉(zhuǎn)的一個(gè)新的頁(yè)面展示 window.open攜帶不了token進(jìn)行一個(gè)請(qǐng)求 window.open()方法直接根據(jù)文件路徑進(jìn)行跳轉(zhuǎn) 根本沒(méi)有走請(qǐng)求 自然攜帶不了token,知道原因以后就好解決了 我們可以先通過(guò)window.opne()方法 把我們需要的參數(shù)傳遞并打開(kāi)一個(gè)新的頁(yè)面 Window open() 方法

    2024年02月15日
    瀏覽(36)
  • 前端實(shí)現(xiàn)pdf,圖片,word文件預(yù)覽

    前端實(shí)現(xiàn)pdf,圖片,word文件預(yù)覽

    需求:實(shí)現(xiàn)一個(gè)在線預(yù)覽pdf、excel、word、圖片等文件的功能。 介紹:支持pdf、xlsx、docx、jpg、png、jpeg。 以下使用Vue3代碼實(shí)現(xiàn)所有功能,建議以下的預(yù)覽文件標(biāo)簽可以在外層包裹一層彈窗。 iframe標(biāo)簽?zāi)軌驅(qū)⒘硪粋€(gè)HTML頁(yè)面嵌入到當(dāng)前頁(yè)面中,我們的圖片也能夠使用iframe標(biāo)簽來(lái)

    2024年02月11日
    瀏覽(26)
  • vue 純前端預(yù)覽pdf,純前端實(shí)現(xiàn)pdf加水印下載文件也帶水印,防止pdf下載

    vue 純前端預(yù)覽pdf,純前端實(shí)現(xiàn)pdf加水印下載文件也帶水印,防止pdf下載

    ? 原理:主要是利用pdfh5這個(gè)插件來(lái)完成的 ? 使用方法: ? 1.頁(yè)面需要有一個(gè)容器例子:div id=\\\"demo\\\"/div ? 2.下載pdfh5插件 npm install pdfh5 ? (注意:webpack5之后不會(huì)下載polyfill 需要手動(dòng)下載 所以引入pdfh5的時(shí)候會(huì)報(bào)錯(cuò)) ? 解決方案:下載 node-polyfill-webpack-plugin npm install node-polyfill-

    2024年04月15日
    瀏覽(129)
  • 前端js打開(kāi)pdf文件--文件通過(guò)瀏覽器打開(kāi),以pdf形式進(jìn)行預(yù)覽

    通過(guò)點(diǎn)擊button按鈕,觸發(fā) @click=\\\"openPDF(performance_report)\\\"方法,把對(duì)應(yīng)需要展示的pdf傳送到openPDF()方法內(nèi),這里的pdf文件格式必須包括id、name、url。 在這里,performance_report為預(yù)覽的文件:

    2024年02月14日
    瀏覽(35)
  • Java后端向前端返回文件流——實(shí)現(xiàn)下載功能!

    Java后端向前端返回文件流——實(shí)現(xiàn)下載功能!

    前端實(shí)現(xiàn)文件下載功能有多種方法,這里就不一一介紹,這里只介紹使用文件流下載的實(shí)現(xiàn)方法。 既然是文件流那就肯定需要給前端返回一堆二進(jìn)制編碼,作為后端就可以返回一個(gè) OutPutStream 后端可以使用Java中servlet提供的 HttpServletResponse ,核心步驟是要設(shè)置響應(yīng)的數(shù)據(jù)類型

    2024年02月08日
    瀏覽(29)
  • Java后端向前端返回文件流——實(shí)現(xiàn)下載功能

    Java后端向前端返回文件流——實(shí)現(xiàn)下載功能

    前端實(shí)現(xiàn)文件下載功能有多種方法,這里就不一一介紹,這里只介紹使用文件流下載的實(shí)現(xiàn)方法。 既然是文件流那就肯定需要給前端返回一堆二進(jìn)制編碼,作為后端就可以返回一個(gè) OutPutStream 后端可以使用Java中servlet提供的 HttpServletResponse ,核心步驟是要設(shè)置響應(yīng)的數(shù)據(jù)類型

    2024年02月11日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包