溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Vue+ElementUI使用vue-pdf實現(xiàn)預(yù)覽功能

發(fā)布時間:2020-10-23 21:49:13 來源:腳本之家 閱讀:600 作者:Harvey07 欄目:web開發(fā)

Vue + ElementUI項目中使用vue-pdf實現(xiàn)簡單預(yù)覽,供大家參考,具體內(nèi)容如下

1、安裝 vue-pdf

npm install --save vue-pdf

2、在vue頁面中導(dǎo)入對應(yīng)的組件

我這是通過點擊 預(yù)覽 按鈕 獲取id打開一個dialog來實現(xiàn)

<!--PDF 預(yù)覽-->
 <el-dialog :title="PDF 預(yù)覽"
  :visible.sync="viewVisible" width="80%" center
   @close='closeDialog'>
     <div >
        <el-button type="primary" size="small" @click.stop="previousPage">
           上一頁
         </el-button>
         <el-button type="primary" size="small" @click.stop="nextPage">
         下一頁
        </el-button>
     <span>當(dāng)前第{{pdfPage}}頁 / 共{{pageCount}}頁</span>
    </div>

    <div >
     <pdf
       :src="src"
       :page="pdfPage"
       @num-pages="pageCount = $event"
       @page-loaded="pdfPage = $event"
       
    ></pdf>
  </div>
</el-dialog>
<script>
 import pdf from 'vue-pdf';
 export default {
    components: {
      pdf
    },
    data() {
    return {
    //PDF預(yù)覽
        viewVisible: false,
        src: null,
        pdfPage : 1,
        pageCount: 0,
  }
 },
 methods:{
  //PDF預(yù)覽
      previewPDF(row){
        this.src = pdf.createLoadingTask(documentConstants.previewPDFUrl+row.contractId);
        this.src.then(pdf => {
          this.viewVisible = true;
        });
      },

      //關(guān)閉窗口初始化PDF頁碼
      closeDialog(){
        this.pdfPage = 1;
      },

      //PDF改變頁數(shù)
      previousPage(){
        var p = this.pdfPage
        p = p>1?p-1:this.pageCount
        this.pdfPage = p
      },
      nextPage(){
        var p = this.pdfPage
        p = p<this.pageCount?p+1:1
        this.pdfPage = p
      }
 }
  }
</script>

3、Controller的返回

@RequestMapping(value = "/previewPDF/{contractId}")
  public ResponseEntity<byte[]> previewPDF(@PathVariable Long contractId) throws TException, IOException {
    ContractAttachmentTmpModelDTO model = contractScanManagementRpcService.queryContractAttachmentTmp(contractId);
    HttpHeaders headers = new HttpHeaders();
    headers.setContentDispositionFormData("attachment", model.getAttachmentName());
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    return new ResponseEntity<byte[]>(model.getAttachmentData(),
        headers, HttpStatus.OK);
  }

總結(jié):這個是實現(xiàn)一個簡單的預(yù)覽功能。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI