当前位置: 首页 > article >正文

Vue2中使用firefox的pdfjs进行文件文件流预览

文章目录

  • 1.使用场景
  • 2. 使用方式
    • 1. npm 包下载,[点击查看](https://www.npmjs.com/package/pdfjs-dist)
    • 2. 官网下载
      • 1. 放到public文件夹下面
      • 2. 官网下载地址[点我,进入官网](https://github.com/mozilla/pdf.js/tags?after=v3.3.122)
    • 3. 代码演示
    • 4. 图片预览
    • 5. 如果遇到跨域或者application/octet-stream等问题

1.使用场景

pdf链接或者pdf文件流的预览

2. 使用方式

1. npm 包下载,点击查看

npm i pdfjs-dist // 此种方式,不过多介绍,网上都是

2. 官网下载

1. 放到public文件夹下面

在这里插入图片描述

2. 官网下载地址点我,进入官网

由于是github可能有些网络进不去,可以通过网盘下载
链接: https://pan.baidu.com/s/1cG06QTtWwTSTSzOPWy5NQg?pwd=rcnm 提取码: rcnm

3. 代码演示

<template>
    <div class="pdf-preview">
        <el-row>
            <el-col :span="24">
                <el-button @click="handleChooseLocalFile" type="primary">选择本地文件</el-button>
            </el-col>
        </el-row>
        <iframe class="pdf-iframe" :src="previewURL" width="100%" height="800px" v-if="previewURL"></iframe>
    </div>
</template>
<script>
export default {
    name: "pdfPreview",
    data() {
        return {
            // public 下面的路径
            pdfJsViewer: "/pdfjs-4.8.69/web/viewer.html",
            fileUrl: "/pdfjs-4.8.69/web/compressed.tracemonkey-pldi-09.pdf",
        };
    },

    computed: {
        previewURL() {
            return this.fileUrl ? `${this.pdfJsViewer}?file=${encodeURIComponent(this.fileUrl)}` : "";
        },
    },
    methods: {
        handleChooseLocalFile() {
            let input = document.createElement("input");
            input.type = "file";
            input.accept = ".pdf";
            input.multiple = false;
            input.onchange = (e) => {
                let file = e.target.files[0];
                if (file) {
                    this.fileUrl = URL.createObjectURL(file);
                }
            };
            input.click();
            input.remove();
        },
    },
};
</script>

<style scoped lang="scss">
.inner-tool {
    display: flex;
    flex-direction: column;
}
.pdf-preview {
    flex: 1;
}
.pdf-iframe {
    margin-top: 20px;
    height: calc(100vh - 150px);
}
</style>

4. 图片预览

在这里插入图片描述

5. 如果遇到跨域或者application/octet-stream等问题

参考大佬 平凡的人类 空白


http://www.kler.cn/a/387865.html

相关文章:

  • 基于Qt/C++全局键盘和鼠标事件监控工具
  • 生成 Django 中文文档 PDF 版
  • Linux——基础指令2 + 权限
  • jQuery笔记
  • 【go从零单排】Rate Limiting限流
  • 【大数据学习 | HBASE高级】region split机制和策略
  • vue.js组件和传值以及微信小程序组件和传值
  • WordPress文章自动提交Bing搜索引擎:PHP推送脚本教程
  • Visual Studio高版本到低版本的转换
  • Spring Boot 监视器
  • EMNLP 2024 BoF 活动报名:用 Embeddings、Reranker、小型语言模型打造更优搜索!
  • 超萌!HTMLCSS:打造趣味动画卡通 dog
  • 「QT」几何数据类 之 QPointF 浮点型点类
  • 最大和值距离
  • WPF MVVM入门系列教程(三、数据绑定)
  • IDEA中新建与切换Git分支
  • 大数据-208 数据挖掘 机器学习理论 - 岭回归 和 Lasso 算法 原理
  • “单元测试”应该怎么写比较好
  • webpack 执行流程 — 实现 myWebpack
  • L1-4【例7-4①】 求最小值及其下标
  • ArrayList扩容机制
  • vue链接跳转
  • bert-base-uncased使用
  • 阐述对于鸿蒙生态未来的发展趋势的看法
  • 智慧教学资源管理:SpringBoot与Vue的强强联合
  • 15分钟学 Go 第 42 天:RESTful API设计