vue预览本地pdf文件方法之iframe

2022-09-28 14:45:11

之前试了两种方法

1、vue预览本地pdf文件方法之a标签

2、vue预览本地pdf文件方法之vue-pdf组件

都不符合需求想要的效果

方法1只是重新打开窗口,适用于pdf预览简单需求

方法2因为是单页展现,还需要上一页下一页的切换,也不合适

最后我试了一下iframe刚好满足我的需求

废话不多说,直接上代码:

最核心一句代码

只需要一句代码

<iframe :src="pdfSrc"  frameborder="0" width="100%" height="100%" ></iframe>

预览效果还自带下载打印功能

完整代码

<template>
    <div>
        <div style="text-align: left;">
        <H2>行业资料</H2>
        <el-divider>
        </el-divider>
        <el-container>
            <el-aside width="300px" style="border: 1px solid #eee;height: 1000px; background-color: #D3DCE6;">
                <div class="myTree">
                <el-tree default-expand-all :props="defaultProps" :data="tableData"  @node-click="handleNodeClick"></el-tree>
                </div>
            </el-aside>
            <el-container  style="border: 1px solid #eee;margin-left: 10px;">
                <iframe :src="pdfSrc"  frameborder="0" width="100%" height="100%" ></iframe>
            </el-container>
        </el-container>
        </div>
    </div>
</template>

<script>

  export default {
    name: "IndustryInformation",
    data(){
      return {
        currentPage: 0, // pdf文件页码
        pageCount: 0, // pdf文件总页数
        fileType: 'pdf', // 文件类型
        pdfSrc: '',  // pdf文件地址
        defaultProps: {
          children: 'children',
          label: 'name'
        },

        tableData: [{
          id: 1,
          name: '道路工程资料',
          children:[
            {
              id: 2,
              name: '公路工程资料编制概述',
              children:[
                {
                  id: 21,
                  name: '路面工程部分分项划分表',
                  src: '/1.pdf',
                },
                {
                  id: 13,
                  name: '一般建设项目单位工程划分表',
                  src: '/2.pdf',
                },
                {
                  id: 14,
                  name: '路基工程部分分项划分表',
                  src: '/3.pdf',
                },
                {
                  id: 33,
                  name: '桥梁工程部分分项划分表',
                  src: '/4.pdf',
                },
                {
                  id: 34,
                  name: '隧道工程部分分项划分表',
                  src: '/5.pdf',
                }
              ]
            },
            {
              id: 3,
              name: '公路工程竣工资料',
              children:[
                {
                  id: 7,
                  name: '公路工程竣工文件编排层次',
                  src: '/5.pdf',
                },
                {
                  id: 8,
                  name: '工程洽商记录表',
                  src: '/4.pdf',
                },
                {
                  id: 9,
                  name: '工程设计表更、洽商一览表',
                  src: '/3.pdf',
                }
              ]
            }
          ]}]
      }
    },
    methods:{
      handleNodeClick(data) {
        this.pdfSrc = data.src;
      }

    }
  }
</script>

<style scoped>
    .myTree /deep/ .el-tree {
        position: relative;
        cursor: default;
        color: #606266;
        background-color: #D3DCE6;
    }
</style>

最终效果

  • 作者:菜鸟茜
  • 原文链接:https://blog.csdn.net/rear0312/article/details/110089150
    更新时间:2022-09-28 14:45:11