vue实现pdf预览功能

背景:材料上传之后点击预览实现在浏览器上预览的效果
效果如下:
在这里插入图片描述
实现代码如下:
//预览和下载操作

<el-table-column fixed="right" label="操作" width="210">
              <template #default="scope">
                <span
                  @click="handleRowClick(scope.row)"
                  class="table-btn btn-handle"
                  ><i class="ri-eye-line"></i>预览</span
                >
                <span
                  @click="handleDownLoadClick(scope.row)"
                  class="table-btn btn-handle"
                  ><i class="ri-download-2-line"></i>下载</span
                >
              </template>
            </el-table-column>
// 材料预览
export function materialPreview(data) {
    return Http.request({
      url: '/file/preview',
      method: 'get',
      responseType: 'blob',
      data: data
    });
  }
  //预览弹窗
  <el-dialog
      title="预览"
      :visible.sync="PreviewDialogVisible"
      append-to-body
      width="70%"
      center
    >
      <div>
        <iframe :src="pdfSrc" width="100%" height="800px"></iframe>
      </div>
    </el-dialog>
    //data中定义的变量
      data() {
    return {
      pdfSrc: "",
      downloadUrl: "http://10.110.96.76/",
      PreviewDialogVisible: false,
      }
     }
    //预览代码
        handleRowClick(row) {
      materialPreview({
        fileName:row.fileName,
        realFileName:row.fileName,
      }).then((res) => {
        console.log(res);

        const blob = new Blob([res.data], { type: "application/pdf" });
        this.pdfSrc = window.URL.createObjectURL(blob);
        this.$nextTick(() => {
          this.PreviewDialogVisible = true;
        });

        console.log(this.pdfSrc);
        //window.open(this.pdfSrc) //新窗口打开,借用浏览器去打印
      });
    }
    //下载代码
      handleDownLoadClick(data) {
      if (data.downloadUrl != null) {
        window.open(this.downloadUrl + data.downloadUrl);
      }
    },

后台返回的流文件格式
在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值